- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlab中fft的用法及注意事项.pdf
matlab 的 FFT 函数
相关语法:
Y = fft(X)
Y = fft(X,n)
Y = fft(X,[],dim)
Y = fft(X,n,dim)
定义如下:
相关的一个例子:
Fs = 1000; % 采样频率
T = 1/Fs; % 采样时间
L = 1000; % 总的采样点数
t = (0:L-1)*T; % 时间序列(时间轴)
%产生一个幅值为0.7频率为50HZ 正弦+另外一个信号的幅值为1频率为120Hz 的正弦信号
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % 混入噪声信号
plot(Fs*t(1:50),y(1:50)) %画出前50个点
title(Signal Corrupted with Zero-Mean Random Noise)
xlabel(time (milliseconds))
NFFT = 2^nextpow2(L); % 求得最接近总采样点的2^n,这里应该是2^10=1024
Y = fft(y,NFFT)/L; %进行 fft 变换(除以总采样点数,是为了后面精确看出原始信号幅值 )
f = Fs/2*linspace(0,1,NFFT/2+1);% 频率轴 (只画到 Fs/2即可,由于 y 为实数,后面一半是对称
的)
% 画出频率幅度图形,可以看出 50Hz 幅值大概0.7,120Hz 幅值大概为1.
plot(f,2*abs(Y(1:NFFT/2+1)))
title(Single-Sided Amplitude Spectrum of y(t))
xlabel(Frequency (Hz))
ylabel(|Y(f)|)
主要有两点注意的地方:
1、从公式上看,matlab 的 fft 序号是从1到 N,但是绝大多数教材上是从 0到 N-1。
2、2、Y=fft(x)之后,这个 Y 是一个复数,它的模值应该除以(length(x)2),才能得到各个
频率信号实际幅值。
fftshift
fftshift
作用:将零频点移到频谱的中间
用法:
Y=fftshift(X)
Y=fftshift(X,dim)
描述:fftshift 移动零频点到频谱中间,重新排列 fft,fft2和 fftn 的输出结果。将零
频点放到频谱的中间对于观察傅立叶变换是有用的。
示例:
clf;
fs=100;N=256; %采样频率和数据点数
n=0:N-1;t=n/fs; %时间序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
y1=fft(x,N); %对信号进行快速 Fourier 变换
y2=fftshift(y1);
mag1=abs(y1); %求得 Fourier 变换后的振幅
mag2=abs(y2);
f1=n*fs/N; %频率序列
f2=n*fs/N-fs/2;
subplot(3,1,1),plot(f1,mag1,r); %绘出随频率变化的振幅
xlabel(频率/Hz);
ylabel(振幅);title(图1:usual FFT,color,r);grid on;
subplot(3,1,2),plot(f2,mag1,b); %绘出随频率变化的振幅
xlabel(频率/Hz);
ylabel(振幅);title(图2:FFT without fftshift,color,b);grid on;
subplot(3,1,3),plot(f2,mag2,c); %绘出随频率变化的振幅
xlabel(频率/Hz);
ylabel(振幅);title(图3:FFT after fftshift,color,c);grid on;
结论:
1)如果期望绘制的幅频图的频率范围为0~fs,则无需运行 fftshift 变换,如图1。
2)如果期望绘制的幅频图的频率范围为-fs/2~fs/2,则需要运行 fftshift 变换,如图
3;如果不变换,图示的响应频点会发生变换,如图2。
MATLAB 中的 fft 后为何要用 fftshift?
fft 是一维傅里叶变换,即将时域信号转换位频域
fftshift
是针对频域的,将 FFT 的 DC 分量移到频谱中心
即对频域的图像,(假设用一条水平线和一条垂直线将频谱图分成四块
文档评论(0)