fft的物理意义 fft( 四 )


Ndata=https://www.doubo5.com/136; %数据个数N=128; %FFT采用的数据个数n=0:Ndata-1;t=n/fs; %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);y=fft(x,N);mag=abs(y);f=(0:N-1)*fs/N; %真实频率subplot(2,2,3),plot(f(1:N/2),mag(1:N/2)*2/N); %绘出Nyquist频率之前的振幅xlabel('频率/Hz');ylabel('振幅');title('Ndata=https://www.doubo5.com/136 Nfft=128');grid on;
Ndata=https://www.doubo5.com/136; %数据个数N=512; %FFT所用的数据个数n=0:Ndata-1;t=n/fs; %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);y=fft(x,N);mag=abs(y);f=(0:N-1)*fs/N; %真实频率subplot(2,2,4),plot(f(1:N/2),mag(1:N/2)*2/N); %绘出Nyquist频率之前的振幅xlabel('频率/Hz');ylabel('振幅');title('Ndata=https://www.doubo5.com/136 Nfft=512');grid on;
结论:(1)当数据个数和FFT采用的数据个数均为32时,频率分辨率较低,但没有由于添零而导致的其他频率成分 。(2)由于在时间域内信号加零,致使振幅谱中出现很多其他成分,这是加零造成的 。其振幅由于加了多个零而明显减小 。(3)FFT程序将数据截断,这时分辨率较高 。(4)也是在数据的末尾补零,但由于含有信号的数据个数足够多,FFT振幅谱也基本不受影响 。对信号进行频谱分析时,数据样本应有足够的长度,一般FFT程序中所用数据点数与原含有信号数据点数相同,这样的频谱图具有较高的质量,可减小因补零或截断而产生的影响 。
例3:x=cos(2*pi*0.24*n)+cos(2*pi*0.26*n)
(1)数据点过少,几乎无法看出有关信号频谱的详细信息;(2)中间的图是将x(n)补90个零,幅度频谱的数据相当密,称为高密度频谱图 。但从图中很难看出信号的频谱成分 。(3)信号的有效数据很长,可以清楚地看出信号的频率成分,一个是0.24Hz,一个是0.26Hz,称为高分辨率频谱 。可见,采样数据过少,运用FFT变换不能分辨出其中的频率成分 。添加零后可增加频谱中的数据个数,谱的密度增高了,但仍不能分辨其中的频率成分,即谱的分辨率没有提高 。只有数据点数足够多时才能分辨其中的频率成分 。
如何理解FFTfft在matlab中可以按原理采样来运算,也可以用快速fft算法 。
clear
fs=1000
t=0:1/fs:0.6;
f1=100;
f2=300;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
subplot(711)
plot(x);
title('f1(100Hz)\f2(300Hz)的正弦信号,初相0')
xlabel('序列(n)')
grid on
number=512
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(713)
plot(f,abs(y));
title('f1\f2的正弦信号的FFT(512点)')
xlabel('频率Hz')
grid on
x=x+randn(1,length(x));
subplot(715)
plot(x);
title('原f1\f2的正弦信号(含随机噪声)')
xlabel('序列(n)')
grid on
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(717)
plot(f,abs(y));
title('原f1\f2的正弦信号(含随机噪声)的FFT(512点)')
xlabel('频率Hz')
grid on
数字示波器的FFT运算是什么?示波器的FFT运算就是快速傅里叶变换,通过傅里叶变换可实现实现时域信号和频域信号的转换,展示出时域信号的频率构成 。每一个波形都可以被分解成不同频率、幅值正弦波叠加,FFT运算得到的频率点都是方波分出的谐波分量的频率 。

秒懂生活扩展阅读