MATLAB中的fft后為何要用fftshift?_第1頁
MATLAB中的fft后為何要用fftshift?_第2頁
MATLAB中的fft后為何要用fftshift?_第3頁
MATLAB中的fft后為何要用fftshift?_第4頁
MATLAB中的fft后為何要用fftshift?_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 MATLAB中的fft后為何要用fftshift? 分類: Matlab 2011-08-15 10:52 581人閱讀 評論(0) 收藏 舉報 fft是一維傅里葉變換,即將時域信號轉(zhuǎn)換為頻域信號fftshift是針對頻域的,將FFT的DC分量移到頻譜中心即對頻域的圖像,(假設(shè)用一條水平線和一條垂直線將頻譜圖分成四塊)對這四塊進行對角線的交換與反對角線的交換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就是對換數(shù)據(jù)的左右兩邊比如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時,應(yīng)注意。假定采樣頻率fs,采樣間隔dt,采樣點數(shù)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,其與直接用下面的結(jié)果一樣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;   %采樣頻率和數(shù)據(jù)點數(shù)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   |字號大中小 訂閱 愿消三障諸煩惱,愿得智慧真明了,普愿罪障悉消除,世世常行菩薩道。愿以此功德。莊嚴佛凈土。上報四重恩。下濟三途苦。若有見聞?wù)?。悉發(fā)菩提心。盡此一報身。同生極樂國。 一. 實信號情況因為實信號以fs為采樣速率的信號在 fs/2 處混疊,所以實信號fft的結(jié)果中前半部分對應(yīng)0, fs/2,后半部分對應(yīng) -fs/2, 01)實信號fft的結(jié)果前半部分對應(yīng)0, fs/2是正頻率的結(jié)果,后半部分對應(yīng) -fs/2, 0是負頻率的結(jié)果。大于fs/2的部分的

17、頻譜實際上是實信號的負頻率加fs的結(jié)果。故要得到正確的結(jié)果,只需將視在頻率減去fs即可得到頻譜對應(yīng)的真實負頻率2)如果要讓實信號fft的結(jié)果與-fs/2, fs/2對應(yīng),則要fft后fftshift一下即可,fftshift的操作是將fft結(jié)果以fs/2為中心左右互換3)如果實信號fft的繪圖頻率f從-fs/2, fs/2,并且沒有fftshift,則fft正頻譜對應(yīng)f在0, fs/2的結(jié)果將混疊到(f - fs/2)的位置;fft負頻譜對應(yīng)f在-fs/2, 0的結(jié)果混疊到 f + fs - fs/2 的位置,注意這里f為負值,也就是說此種情況下fft負頻譜對應(yīng)的視在頻率減去fs/2即可得到頻

18、譜對應(yīng)的真實負頻率 二. 復(fù)信號情況1)復(fù)信號沒有負頻率,以fs為采樣速率的信號,fft的頻譜結(jié)果是從0, fs的。2)在 f > fs/2 時,對復(fù)信號的fft結(jié)果進行fftshift會產(chǎn)生頻率混疊(將下面的示例2中的頻率從f=15改為f=85可以驗證f=85的譜線在fftshift后跑到 f = -15 = 85 - fs = 85 - 100的位置了),所以復(fù)信號也一般要求 f <= fs/23)在對雷達的慢時間維(復(fù)信號)進行fft后,由于要用doppler = (0:LFFT-1)/LFFT  - 0.5)*PRF; 計算多普勒頻率,所以對該慢時間信號

19、fft后要fftshift下,以便和正確的頻率單元相對應(yīng)。注意多普勒頻率fd < = PRF/2 時才測的準!fftshift 作用:將零頻點移到頻譜的中間用法:Y=fftshift(X)Y=fftshift(X,dim)描述:fftshift移動零頻點到頻譜中間,重新排列fft,fft2和fftn的輸出結(jié)果。將零頻點放到頻譜的中間對于觀察傅立葉變換是有用的。示例1 - 實信號的情況:clf;fs=100;N=256;   %采樣頻率和數(shù)據(jù)點數(shù)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;結(jié)論: 1)如果期望繪制的幅頻圖的頻率范圍為0fs,則無需運行fftshift變換,正頻率對應(yīng)在0, fs/2, 大于fs/2的頻譜的頻率值為對應(yīng)-fs/2  , 0 負頻率f + fs,注意f是負頻率,是個負數(shù)。如圖1。2)如果期望繪制的幅頻圖的頻率范圍為-fs/2fs/2,則需要運行fftshift變換,如圖3;如果不變換,圖示的響應(yīng)頻點會發(fā)生變換,如圖2,分析見頂端。示例2 - 復(fù)信號的情況:close all; clear; clf;fs=100;N=256;   %采樣頻率和數(shù)據(jù)點數(shù)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論