# Up-converting a sinusoidal signal

I want to up-convert a baseband sinusoidal signal of frequency $4000 \, \rm{Hz}$ using a carrier frequency of $20\, \rm{KHz}$. I read that one can up-convert a baseband signal to a passband signal using the following.

But after convolution with a carrier cosine, I get a $16\, \rm{KHz}$ signal. What could be the problem?

I used following Python code to do convolution with carrier frequency: samples * cosineSignal.

• Multiplying a 4kHz tone with a 20kHz carrier will produce 2 tones, at 16 and 24kHz. What else were you expecting? What is your sample rate? – Juancho Oct 18 '17 at 1:01
• I want to up-convert the signal to 20 kHz passband signal to send. I'm using 48 kHz samp rate on baseband signal. – JayHeo Oct 18 '17 at 1:34
• You should not convolve with a carrier signal. You should multiply! – Rodrigo de Azevedo Oct 18 '17 at 13:04

However, you forgot that your signals are real-valued sinusoidals, which have a (Hermitian) symmetric spectrum. Your baseband signal in the frequency domain then consists of two peaks, one at $$4\,\mathrm{kHz}$$ and one at $$-4\,\mathrm{kHz}$$! (The same goes for your carrier actually, but this is not relevant in this case.) Both peaks are then shifted by $$20\,\mathrm{kHz}$$, so that you end up with $$16\,\mathrm{kHz}$$ as well as $$24\,\mathrm{kHz}$$.
Since you seem to be simulating this, and use a sample rate of $$48\,\mathrm{kHz}$$ across the board, you might run into sampling issues as explained in @hotpaw2 's answer, which is why you might only see the $$16\,\mathrm{kHz}$$ peak.