Ts=0.02;
t=-1:Ts:1-Ts;
%采样信号频率是fs=50;
fs=1/Ts;
%原信号频率是5;
x=5*sin(2*pi*5*t);
%N是总共的采样点数,N=101;
N=length(x);
fx=fft(x);
%N个点有N-1个间隔;
df=fs/(N);
n=0:N-1;
f=n*df;
subplot(211);
plot(t,x);grid;
subplot(212);
plot(f,abs(fx)); grid;
--------------------------
这位兄弟问题里面好像包括两部分吧。
其一是怎么会在5的周围出现频率成分,
是不是应该为0,对不?
这个理由很简单,是频率分辨率的问题,
matlab里面都是连点成线,相当于线性插值,
所以会有过渡的情况出现。
如果你把采样点数变多,如t=-10:Ts:10,你会发现,
谱峰会尖锐一些。也就是5周围的频率成分变小了。
第二个问题是怎么会有两个谱峰?
这个前面几位大侠回答过来,
你画出单边谱就行了。
现在奉上作频率分析的子程序,
仅供参考。
其中x为信号,fs不用解释了,呵呵采频。
function f=frequency(x,fs)
dtlen=length(x);
t=(0:dtlen-1)/fs;
subplot(211);
plot(t,x);
axis tight;
y=abs(fft(x-mean(x)))*2/dtlen;
ff=(0:dtlen/2-1)*fs/dtlen;
subplot(212);
f=y(1:floor(dtlen/2));
plot(ff,f);
axis tight;
return;
再给你附个图。
注意我的幅值归一化过。
-------------------------
请问
在你的code里,
为何做FFT前,要去均值呢?
fft(x-mean(x))
这点,我不是太清楚。
-----------------
消除直流分量.
文章评论(0条评论)
登录后参与讨论