怎么用matlab画出正弦函数的频谱图?
怎么用matlab画出正弦函数的频谱图?比如函数x=5*sin(2*pi*10t);怎么画出这个函数的频谱图?t=-2*pi:pi/8:2*pi;
x=5*sin(2*pi*10*t);
fx=fft(x);
plot(t,abs(fx))
这是我用的编程的语句,但是频率应该为10,幅值因该是5,但是出来的图形不是这样。请问我怎样确定纵、横坐标画出正确的图形? 把程序作了修改:
t=-1:0.01:1;
x=5*sin(2*pi*10*t);
N=length(x);
fx=fft(x);
df=100/N;
n=0:N/2;
f=n*df;
plot(f,abs(fx(n+1))*2/N); grid; 如果把原始信号也画出来就更好对比了。
% 正旋信号的fft程序
t=-1:0.01:1;
x=5*sin(2*pi*10*t);
N=length(x);
fx=fft(x);
df=100/N;
n=0:N/2;
f=n*df;
subplot(211);
plot(t,x);grid;
subplot(212);
plot(f,abs(fx(n+1))*2/N); grid; N是采样率?df是频率分辨率?df=100/N;中的100是什莫? 原帖由 vib 于 2006-11-28 21:01 发表
N是采样率?df是频率分辨率?df=100/N;中的100是什莫?
N是样点的个数,df是频率分辨率,df=fs/N,fs=100。fs=100是从那儿看出来的呢?是从t=-1:0.01:1中的0.01得到的。 采样率我弄明白了,可是把采样率再分点,我就不懂是怎末回事!你的点数是什末?频率分辨率弄不明白,只只道是频域图中两个点的最小间隔,如果在时域内横坐标的最小间隔是采样时间,但频域内是什末? 原帖由 vib 于 2006-11-29 20:44 发表
采样率我弄明白了,可是把采样率再分点,我就不懂是怎末回事!你的点数是什末?频率分辨率弄不明白,只只道是频域图中两个点的最小间隔,如果在时域内横坐标的最小间隔是采样时间,但频域内是什末?
频率分辨率在这里是表示谱图上一条谱线与下一条谱线之间的频率间隔,也是频域上横坐标的间隔。 呵呵,很基本的问题,但很重要 我正在找呢,歇息 原帖由 god-xe 于 2006-10-25 21:49 发表
如果把原始信号也画出来就更好对比了。
% 正旋信号的fft程序
t=-1:0.01:1;
x=5*sin(2*pi*10*t);
N=length(x);
fx=fft(x);
df=100/N;
n=0:N/2;
f=n*df;
subplot(211);
plot(t,x);grid;
subplot(212);
...
这里边的N=length(x);好象不太常用吧,我们通常的采样点数都是1024这样的2的幂数,然后由于对称性,所以只取采样点数的一半n=0:N/2;就可以了。
如果按照以上的程序,那么得出的df=1了。
发这些没其他什么意思,只是让楼主对这个更清晰点,大家一起讨论嘛 plot(f,abs(fx(n+1))*2/N) 中的abs(fx(n+1))*2/N是取变换后的幅度,为什么要乘以2/N呢? 原帖由 lwm 于 2006-12-4 18:28 发表
plot(f,abs(fx(n+1))*2/N) 中的abs(fx(n+1))*2/N是取变换后的幅度,为什么要乘以2/N呢?
请参看:
http://forum.vibunion.com/forum/thread-23665-1-8.html
其中给了说明。 已看,解释的很详细,谢谢songzy41! 功率谱密度的物理意义是什么呢?是在不同频率下信号强度的大小吗?功率谱等于幅度频谱的平方吗? 觉得应该让负频率也显示出来
Ts=0.02;
t=-1:Ts:1;
%采样信号频率是fs=50;
fs=1/Ts;
%原信号频率是10;
x=5*sin(2*pi*10*t);
%N是总共的采样点数,N=101;
N=length(x);
fx=fft(x);
%N个点有N-1个间隔;
df=fs/(N-1);
%让负频率也显示出来;
n=-(N-1)/2:(N-1)/2;
f=n*df;
subplot(211);
plot(t,x);grid;
subplot(212);
plot(f,abs(fx)); grid;
abs(fx(n+1))*2/N)钟fx(n+1)=fx(是吗?),也可以这样写吗?如果有了负频率ms这个2就不用乘了吧。我再回去看看书关于N的,看了你链接的帖子,很感谢!
页:
[1]
2