Modulation upsampling method

I try to implement a qpsk modulator in Octave. The chain is the state of the art I guess:

$$\text{Symbol mapper} \rightarrow \text{Upsample 4} \rightarrow \text{Root raised cosine filter}$$

My main question is about the upsampling. I try to do it two ways:

• zero hold (I think it is called like that - adding factor-1 last values)
• zero padding (adding factor-1 zeros, here the spectrum is duplicated and alias filtered by RRC)

I have not tried yet to do a BER measure with AWGN, but eye-diagram and spectrum looks different depending how I upsample. I have the feeling that the spectrum and eye diagram is more correct with zero hold but get a residual bias at the sampling point.

Am I wrong?