Basically my objective is to generate a complex equivalent baseband signal of an AM modulated wave in MATLAB. Then to view the difference in frequency spectrum of AM modulated RF signal vs complex equivalent baseband of (AM modulated RF signal).

I generated an equivalent complex baseband signal for an AM modulated signal and when viewing the spectra of complex baseband signal, I see frequency content centered at 0 but too many frequency content around carrier frequency as well.

Could anyone let me know why I am seeing frequency content around carrier frequency as well?

Here are the steps I followed:

  • Generated a carrier signal and message signal.
  • Did AM modulation.
  • Generated Inphase and Quadrature components.
  • Then represented complex baseband signal by $x_{bb}(t)=x_i(t)+jx_q(t)$
  • View the frequency spectra of AM modulated wave.
  • View the frequency spectra of Complex baseband signal.

When I compare the spectra, I see that the spectra of complex baseband signal is centered around 0 but has frequency components at the carrier frequency range (both positive and negative). Here are the screenshots:

  1. Spectra - AM modulated signal spectra - AM modulated signal

  2. Spectra - Equivalent complex baseband signal

    spectra - Equivalent complex baseband signal

Here is my MATLAB code:

m=sin(2*pi*t*fm);  %message signal 
x=cos(2*pi*t*fx); %carrier signal
xm=m.*x;  %AM
hx=imag(hilbert(xm)); %hilbert transform


xbb=xit+(1i*xqt); %equivalent complex baseband signal

F=fftshift(fft(xm,nfft));      %spectra of AM modulated wave

F=fftshift(fft(xbb,nfft));  %spectra of equivalent complex baseband

You have a bug in the formulation of your complex heterodyne oscillator signal inside your complex multiplication. This seems to be creating both sum and difference frequency results. Thus the extra high-frequency spectrum.

  • $\begingroup$ So, you mean at this part: xit=(xm.*cos(2*pifxt))+(hx.*cos(2*pifxt)); xqt=(hx.*cos(2*pifxt))-(xm.*sin(2*pifxt)); xbb=xit+(1i*xqt); %equivalent complex baseband signal $\endgroup$
    – sundar
    May 26 '17 at 9:11
  • $\begingroup$ I'm not an expert on Hilbert Transforms, but I think you should expect to see the one sided frequency spectrum if you do it right. I would try taking the FFT of of xm + i*hilbert(xm). Good luck! $\endgroup$ Jul 25 '17 at 16:03

Two issues here: (One) In creating the equivalent complex baseband signal (which for this modulation would be a real signal) and (Two) in creating the spectrums.

Creating the baseband signal

The Hilbert Transform will convert the two sided modulated signal to a single sided signal as the two sidebands centered on the upper sideband carrier:

h = hilbert(xm);

Simply frequency translate this to baseband using the single sided negative carrrier:

bb = h.*exp(-j*2*pi*t*fx);

Creating the spectrums:

There is not enough frequency resolution in the FFT used since it was truncated to 1024 samples. At the given $f_s$ of 15 KHz, this is only 0.06 seconds of the time domain signal, and the bandwidth of each FFT bin is $f_s/1024 = 14.6 \text{ Hz}$. The sidebands would at $\pm 5 \text{ Hz}$ from the carrier and therefore not visible.

Original FFT of only 1024 length as OP had done:

Original FFT

Zoom in around carrier after FFT of entire modulated sequence (15001 length): Here the two sidebands are clearly visible as distinct FFT bins. Better balance between the two and reduction of the other spectral leakage components can be achieved by windowing the signal prior to taking the FFT.

Better FFT

Doing both of these results in the following spectrum of the baseband equivalent signal:

F = fftshift(fft(bb))

Zoom in below:

Resulting spectrum


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.