-
FFT
是
Fast Fourier Tran
sform(
快速傅里叶变换
)
的简称
,
FFT
算法在
MATLAB
中
实现的函数是
Y=fft(x,n)
。刚接触频谱分析用到
FFT
时,几乎都会对<
/p>
MATLAB
的
fft
< br>函数产生一些疑惑,下面以看一个例子(根据
MATLAB
帮助修改)。
Fs = 2000;
%
设置采样频率
T = 1/Fs;
%
得到采用时间
L = 1000;
%
设置
信号点数,长度
1
秒
t = (0:L-1)*T;
%
计算离散时间,
%
两个正弦波叠加
f1 = 80;
A1 = 0.5;
%
第一个正弦波
< br>100Hz
,幅度
0.5
f2
= 150;
A2 = 1.0
%
第<
/p>
2
个正弦波
150Hz
< br>,幅度
1.0
A3 = 0.5;
%
白噪声幅度;
x =
A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);
%
产生离散时间信号;
y = x + A3*randn(size(t));
%
叠加噪声;
%
时域波形图
subplot(2,1,1)
plot(Fs*t(1:50),x(1:50))
title('Sinusoids Signal')
xlabel('time
(milliseconds)')
subplot(2,1,2)
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted
with Zero-Mean Random Noise')
xlabel('time
(milliseconds)')
NFFT =
2^nextpow2(L); %
设置
FFT
点数,一般为
2
的
N
次方,如
1024
,
512
等
Y = fft(y,NFFT)/L;
%
计算频域信号,
f =
Fs/2*linspace(0,1,NFFT/2+1);
%
频率离散化,
< br>fft
后对应的频率是
-Fs/2
到
Fs/2,
由
NFFT
个离散频点表示
%
这里只画出正频率;
% Plot
single-sided amplitude spectrum.
figure;
plot(f,2*abs(Y(1:NFFT/2+1)));
%
fft
后含幅度和相位,一般观察幅度谱,并把负频率加上去,
title('Single-Sided Amplitude Spectrum
of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
运行结果时域波形图如图所示:
幅度谱如下:
-
-
-
-
-
-
-
-
-
上一篇:电脑蓝屏及英文报错解决方案大全
下一篇:市场营销专业英语