|
我这里没有装matlab看不了,不过有个程序你可以参考一下
- % 三种频率成分:20Hz,20.5Hz,40Hz
- % 采样频率Fs=100Hz (满足NiQust定理)
- % 要想分辨出信号的所有频谱成分,则分辨率为 0.5Hz
- % 若采样率为Fs=100;最少点数N应满足: Fs/N=0.5 N 最少为200,才能满足0.5Hz的分辨率要求
- % N<200 则无法分辨 20与20.5
- N=256; %分别用128,210,256,512 ,比较频谱形状,比较分辨率,比较方差(即平滑程度)
- % 结论 : 增大N可以提高分辨率
- Fs=100;
- n=0:1:N-1;
- f1=20;
- f2=20.5;
- f3=40;
- %xn=sin(2*pi*f1*n/Fs)+sin(2*pi*f2*n/Fs)+sin(2*pi*f3*n/Fs);多个信号
- xn=sin(2*pi*f1*n/Fs);%单个信号
- subplot(4,1,1);
- plot(n,xn);
- Xk=fft(xn);
- AXk=abs(Xk(1:N/2));
- k=(0:N/2-1)*Fs/N;
- subplot(4,1,2);
- stem(k,AXk); %可分别用plot和stem
- % 补零 先分别另上面N=256和N=200,N=128, 补零到下面M=512,M=1024观察 谱线变化(细化),分辨率(不提高)
- M=512;
- xn2=[xn zeros(1,M-N)];
- Xk2=fft(xn2);
- AXk2=abs(Xk2(1:M/2));
- m=0:1:M-1;
- k2=(0:M/2-1)*Fs/M;
- subplot(4,1,3);
- plot(m,xn2);
- subplot(4,1,4);
- stem(k2,AXk2);%可分别用plot和stem
复制代码 |
评分
-
1
查看全部评分
-
|