网站大量收购闲置独家精品文档,联系QQ:2885784924

matlab中fft的用法及注意事项.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

tangtianxu1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档