How to plot the frequency spectrum of a signal on Matlab?

30 次查看(过去 30 天)
Hello everybody I have already developed a small code with a lot of help from Mathworks and the help function (in Matlab), and from some forums but I need someone to help me with my code. It's pretty much working but the spectrum's amplitude is not going according to theory. It should be half of the carrier's amplitude which in my case should be 25 volts, but Matlab's plot gives 22.51 volts which is not correct also on the sidebands I am getting 8.476 volts and it should be a quarter of the carrier's amplitude which in my case is 12.5 volts.
Here is my code:
clear all;clc
Fs = 200; % Sampling frequency Fs >> 2fmax & fmax = 50 Hz
t = 0:1/Fs:7501; % length (x) = 7501
x = 50*(1+0.75*sin(2*pi*t)).*cos(100*pi*t); % AM Signal
xdft = (1/length(x)).*fft(x);
freq = -100:(Fs/length(x)):100-(Fs/length(x)); %Frequency Vector
y = abs(fftshift(xdft));
figure(1); % Plot signals in both time and frequency domain
subplot(211);plot(t,x);grid on;title 'Amplitude Modulated Signal';
axis([0 5 -100 100]);xlabel 'Time (sec)';ylabel 'Amplitude (volts)';
subplot(212);plot(freq,y);grid on;title 'AM Signal Spectrum';
axis([-60 60 0 25]);xlabel 'Frequency (Hz)';ylabel 'Amplitude (volts)';
  2 个评论
Gabriel Borrero
Gabriel Borrero 2012-11-4
The code is apparently working but it is not giving me the correct values in the spectrum's amplitude and I don't know how why or how to fix it, so far it is the best I could find for plotting the frequency domain of a signal.

请先登录,再进行评论。

采纳的回答

Gabriel Borrero
Gabriel Borrero 2012-11-4
Before with my time vector wrong t = 0:1/Fs:7501; % length (x) = 7501 <http://i920.photobucket.com/albums/ad48/gabrielthemessenger/before.jpg>
After with the correct time vector t = 0:1/Fs:1-1/Fs; <http://i920.photobucket.com/albums/ad48/gabrielthemessenger/after.jpg>
  6 个评论

请先登录,再进行评论。

更多回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2012-11-4
编辑:Azzi Abdelmalek 2012-11-4
The frequency of your signal is F=1 Hz, Then why t = 0:1/Fs:7501
I suggest
t = 0:1/Fs:1-1/Fs
  8 个评论
Azzi Abdelmalek
Azzi Abdelmalek 2012-11-5
编辑:Azzi Abdelmalek 2012-11-5
why should they be 12.5? I have also, used my code and get the same result then you
Gabriel Borrero
Gabriel Borrero 2012-11-5
Because the theory establishes that the amplitude of those frequency components should be half the carrier's amplitude in my case the carrier's amplitude is 50 volts so when it is transformed into the frequency domain the amplitude decreases by half on the carrier representation in the frequency domain so it should be 25 volts on the middle impulse (carrier) & one quarter of the carrier's amplitude on both the upper & lower impulses so 50/4 = 12.5 volts.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by