fftshifthtml
做用:將零頻點移到頻譜的中間spa
用法:.net
Y=fftshift(X)htm
Y=fftshift(X,dim)blog
描述:fftshift移動零頻點到頻譜中間,從新排列fft,fft2和fftn的輸出結果。將零頻點放到頻譜的中間對於觀察傅立葉變換是有用的。it
fftshift就是對換數據的左右兩邊好比 x=[1 2 3 4] fftshift(x) ->[3 4 1 2] IFFTSHIFT Inverse FFT shift.(就是fftshift的逆)(IFFTSHIFT undoes the effects of FFTSHIFT.grid
x=[1 2 3 4 5];程序
y=fftshift(x)im
y =數據
4 5 1 2 3
ifftshift(y)
ans =
1 2 3 4 5
須要fftshift的緣由:
一、在matlab中,通過fft變換後,數據的頻率範圍是從[0,fs]排列的。
二、而通常,咱們在畫圖或者討論的時候,是從[-fs/2,fs/2]的範圍進行分析。
三、所以,須要將通過fft變換後的圖像的[fs/2,fs]部分移動到[-fs/2,0]這個範圍內。而fftshift就是完成這個功能。一般,若是想獲得所見的中間是0頻的圖像,通過fft變換後,都要再通過fftshift。
=================================================================================================================================
一.對於實信號:
由於實信號以fs爲採樣速率的信號在 fs/2處混疊,因此實信號fft的結果中前半部分對應[0, fs/2],後半部分對應[ -fs/2, 0];
1)實信號fft的結果前半部分對應[0, fs/2]是正頻率的結果,後半部分對應[ -fs/2, 0]是負頻率的結果。大於fs/2的部分的頻譜其實是實信號的負頻率加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便可獲得頻譜對應的真實負頻率。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
結論:
1.若是但願繪製的頻譜圖的頻率範圍爲:0-fs,則無需進行fftshift,正頻率對應0-fs/2;大於fs/2的頻譜的頻率值爲對應[-fs/2 , 0 ]負頻率f + fs,注意f是負頻率,是個負數。
2.若是指望繪製的幅頻圖的頻率範圍爲-fs/2~fs/2,則須要運行fftshift變換,若是不變換,圖示的響應頻點會發生變換。
二.覆信號狀況
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/2
3)在對雷達的慢時間維(覆信號)進行fft後,因爲要用doppler= ((0:LFFT-1)/LFFT - 0.5)*PRF; 計算多普勒頻率,因此對該慢時間信號fft後要fftshift下,以便和正確的頻率單元相對應。注意多普勒頻率fd < = PRF/2 時才測的準!
%=====================================================================================================================================
補充:
%====================================================================================================================================
%關於fftshift的程序理解
clc;close all;clear all;
fs=100;N=256; %採樣頻率和數據點數
n=0:N-1;t=n/fs; %時間序列,從0到2.55s
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信號
y1=fft(x,N); %對信號進行快速Fourier變換,256點DFT
y2=fftshift(y1); %fftshift的操做是將fft結果以fs/2爲中心左右互換
mag1=abs(y1); %求得Fourier變換後的振幅
mag2=abs(y2);
f1=n*fs/N; %頻率序列
f2=n*fs/N-fs/2; %頻率序列向左移fs/2
figure;
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;
%===============================================================================================================================
%覆信號的狀況:
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); %信號
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;
figure;
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;
%=============================================================================================
更直觀的程序:
t=0:0.001:2;
n=2001;
Fs=1000;
Fc=200;
x=cos(2*pi*Fc*t);
y1=fft(x);
y2=fftshift(y1);
f=(0:2000)*Fs/n-Fs/2;
figure;
hold on;
plot(f,abs(y1),'r')
plot(f,abs(y2),'b')
總之用fftshift後頻率序列要減去fs/2
參考:
http://www.cnblogs.com/limanjihe/p/10014142.html
fft後爲何要fftshift: https://blog.csdn.net/ssdxiao01/article/details/6687721
https://blog.csdn.net/zhyoulun/article/details/12859339
https://wenku.baidu.com/view/c6a7964476c66137ee06199a.html