MATLAB中的fft后为何要用fftshift?_第1页
MATLAB中的fft后为何要用fftshift?_第2页
MATLAB中的fft后为何要用fftshift?_第3页
MATLAB中的fft后为何要用fftshift?_第4页
MATLAB中的fft后为何要用fftshift?_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 MATLAB中的fft后为何要用fftshift? 分类: Matlab 2011-08-15 10:52 581人阅读 评论(0) 收藏 举报 fft是一维傅里叶变换,即将时域信号转换为频域信号fftshift是针对频域的,将FFT的DC分量移到频谱中心即对频域的图像,(假设用一条水平线和一条垂直线将频谱图分成四块)对这四块进行对角线的交换与反对角线的交换FFTSHIFT Shift zero-frequency component to center of spectrum.    For vectors, FFTSHIFT(X) swaps(交换

2、) the left and right halves of    X. For matrices, FFTSHIFT(X) swaps the first and third    quadrants and the second and fourth quadrants. For N-D    arrays, FFTSHIFT(X) swaps "half-spaces" of X along each    dimension.  

3、;  FFTSHIFT(X,DIM) applies the FFTSHIFT operation along the     dimension DIM.    FFTSHIFT is useful for visualizing the Fourier transform with    the zero-frequency component in the middle of the spectrum.fftshift就是对换数据的左右两边比如x=1 2 3 4fftshift(

4、x) ->3 4 1 2IFFTSHIFT Inverse FFT shift.(就是fftshift的逆)x=1     2     3     4     5;y=fftshift(x)y =     4     5     1     2  

5、60;  3ifftshift(y)ans =     1     2     3     4     5       IFFTSHIFT undoes the effects of FFTSHIFT.注意:在使用matlab的fft及fftshift时,应注意。假定采样频率fs,采样间隔dt,采样点数N。fft后,频率为(0:N-1)/

6、N/dt进行fftshift后,频率为if mod(N,2)=0n1=(0:N-1)-N/2;elsen1=(0:N-1)-(N-1)/2;end实际上,频率为N点为周期的,所以(0:N-1)所以,对于频率0,1,2,3,4,实际上为0,1,2,-2(3-5),-1(4-5)。fftshift后的频率为-2,-1,0,1,2对于二维fftshift,其与直接用下面的结果一样if mod(tempN,2)=0    kx=(0:tempM-1)/tempM/dx-tempM/2/tempM/dx;% kx=kx*2*pielse    kx=(0:temp

7、M-1)/tempM/dx-(tempM-1)/2/tempM/dx;% kx=kx*2*piendkx=kx*2*pi;if mod(tempM,2)=0    ky=(0:tempN-1)/tempN/dy-tempN/2/tempN/dy;% kx=kx*2*pielse    ky=(0:tempN-1)/tempN/dy-(tempN-1)/2/tempN/dy;% kx=kx*2*piendky=ky*2*pi;temp1=sqrt(kx.2+ky.2);k1=temp1;kx,ky=meshgrid(kx,ky);如下面程序表明上面两个相同

8、:dx=50e3;    dy=50e3;% % % % % % % % % % % tempN=41;tempM=41;% % % % % % % % % % % % % % % %determining the wavenumber kx and kyif mod(tempM,2)=0    kx=(0:tempM-1)-tempM/2;% kx=kx*2*pielse    kx=(0:tempM-1)-(tempM-1)/2;% kx=kx*2*piendkx=kx*2*pi/tempM/dx;if mod

9、(tempN,2)=0    ky=(0:tempN-1)-tempN/2;% kx=kx*2*pielse    ky=(0:tempN-1)-(tempN-1)/2;% kx=kx*2*piendky=ky*2*pi/tempN/dy;kxx,kyy=meshgrid(kx,ky);k00=sqrt(kx.2+ky.2);% % % % % % % % % % % % % % % % if mod(tempM,2)=0    temp1=tempM/2-1;    temp2=(temp1+1):(t

10、empM-1);    temp2=temp2-tempM;    temp3=0:temp1,temp2;    kx=temp3/tempM/dx;% kx=kx*2*pielse    temp1=(tempM-1)/2;    temp2=(temp1+1):(tempM-1);    temp2=temp2-tempM;    temp3=0:temp1,temp2;    kx=temp3/tempM/dx;% kx=kx*

11、2*piendkx=kx*2*pi;if mod(tempN,2)=0    temp1=tempN/2-1;    temp2=(temp1+1):(tempN-1);    temp2=temp2-tempN;    temp3=0:temp1,temp2;    ky=temp3/tempN/dy;% kx=kx*2*pielse    temp1=(tempN-1)/2;    temp2=(temp1+1):(tempN-1);  &#

12、160; temp2=temp2-tempN;    temp3=0:temp1,temp2;    ky=temp3/tempN/dy;% kx=kx*2*piendky=ky*2*pi;kx,ky=meshgrid(kx,ky);kx=fftshift(kx);ky=fftshift(ky);k=sqrt(kx.2+ky.2);figuresubplot(3,1,1),contourf(kxx-kx)subplot(3,1,2),contourf(kyy-ky)subplot(3,1,3),contourf(k00-k)%fft及fftshift示例

13、: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(

14、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 fftshi

15、ft','color','b');grid on;subplot(3,1,3),plot(f2,mag2,'c');   %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('图3:FFT after fftshift','color','c');grid on;Matlab fftshift 详解 - 信号处理基本功  2010-04-13 21:51:10|  分类:

16、 默认分类 |  标签:matlab  radar   |字号大中小 订阅 愿消三障诸烦恼,愿得智慧真明了,普愿罪障悉消除,世世常行菩萨道。愿以此功德。庄严佛净土。上报四重恩。下济三途苦。若有见闻者。悉发菩提心。尽此一报身。同生极乐国。 一. 实信号情况因为实信号以fs为采样速率的信号在 fs/2 处混叠,所以实信号fft的结果中前半部分对应0, fs/2,后半部分对应 -fs/2, 01)实信号fft的结果前半部分对应0, fs/2是正频率的结果,后半部分对应 -fs/2, 0是负频率的结果。大于fs/2的部分的

17、频谱实际上是实信号的负频率加fs的结果。故要得到正确的结果,只需将视在频率减去fs即可得到频谱对应的真实负频率2)如果要让实信号fft的结果与-fs/2, fs/2对应,则要fft后fftshift一下即可,fftshift的操作是将fft结果以fs/2为中心左右互换3)如果实信号fft的绘图频率f从-fs/2, fs/2,并且没有fftshift,则fft正频谱对应f在0, fs/2的结果将混叠到(f - fs/2)的位置;fft负频谱对应f在-fs/2, 0的结果混叠到 f + fs - fs/2 的位置,注意这里f为负值,也就是说此种情况下fft负频谱对应的视在频率减去fs/2即可得到频

18、谱对应的真实负频率 二. 复信号情况1)复信号没有负频率,以fs为采样速率的信号,fft的频谱结果是从0, fs的。2)在 f > fs/2 时,对复信号的fft结果进行fftshift会产生频率混叠(将下面的示例2中的频率从f=15改为f=85可以验证f=85的谱线在fftshift后跑到 f = -15 = 85 - fs = 85 - 100的位置了),所以复信号也一般要求 f <= fs/23)在对雷达的慢时间维(复信号)进行fft后,由于要用doppler = (0:LFFT-1)/LFFT  - 0.5)*PRF; 计算多普勒频率,所以对该慢时间信号

19、fft后要fftshift下,以便和正确的频率单元相对应。注意多普勒频率fd < = PRF/2 时才测的准!fftshift 作用:将零频点移到频谱的中间用法:Y=fftshift(X)Y=fftshift(X,dim)描述:fftshift移动零频点到频谱中间,重新排列fft,fft2和fftn的输出结果。将零频点放到频谱的中间对于观察傅立叶变换是有用的。示例1 - 实信号的情况:clf;fs=100;N=256;   %采样频率和数据点数n=0:N-1;t=n/fs;   %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*p

20、i*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

21、');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

22、(f2, mag2,'c');   %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('图3:FFT after fftshift','color','c');grid on;结论: 1)如果期望绘制的幅频图的频率范围为0fs,则无需运行fftshift变换,正频率对应在0, fs/2, 大于fs/2的频谱的频率值为对应-fs/2  , 0 负频率f + fs,注意f是负频率,是个负数。如图1。2)如果期望绘制的幅频图的频率范围为-fs/2fs/2,则需要运行fftshift变换,如图3;如果不变换,图示的响应频点会发生变换,如图2,分析见顶端。示例2 - 复信号的情况:close all; clear; clf;fs=100;N=256;   %采样频率和数据点数n=0:N-1;t=n/fs;   %时间序列x=0.5*exp(j*2*pi*15*t)+2*exp(j*2*pi*40*t); %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论