1. 程式人生 > >傅裏葉變換(FFT)的多相濾波結構實現

傅裏葉變換(FFT)的多相濾波結構實現

class hold es2017 要求 sca 接收機 .html mar try

作者:桂。

時間:2017-09-25 14:53:01

鏈接:http://www.cnblogs.com/xingshansi/p/7591868.html


前言

以前在梳理信號頻域變換的時候,提到逆序級聯FFT(Inverse cascade FFT)的實現思路,後來分析多相濾波信道化,才發現其實Cascade FFT就是FFT的多相結構實現,在此系統梳理一下。

一、多相結構FFT實現

  A-傳統測頻技術分析

信號的短時傅裏葉變換(STFT)可表示為:

技術分享

其中s為輸入信號,w為對應窗函數。長度為N,k為對應頻率(信道),n為對應時刻。

一般的測頻思路是:AD采樣,加窗,FFT實現,門限檢測以及頻率檢測(粗測頻),借助Rife算法實現精確測頻。

其中,FFT實現步驟為了進一步節約資源,通常利用MoniFFT的思路,即進一步對頻點就行量化。

這裏存在一個平滑點數與處理時間的制約關系(對應就是短時傅裏葉變換,short-time fourier transform,STFT):

  窗函數的滑動步長決定了短時傅裏葉變換的時域分辨率,對其運算時間裕度、輸出數據量等也造成很大影響。當窗口不交疊的滑動時時域分辨率最差,輸出數據率低,留給 FFT 模塊的信號處理時間長,滑動距離變小時,時域分辨率提高,數據輸出率也增加,留給 FFT 模塊的數據處理時間變少。當系統工作在高速率,且要求較高的時頻分辨率時,基於短時傅裏葉變換的接收機將面臨實時處理的瓶頸,並且大量高速的數據輸出也會對後續處理環節造成計算量和計算時間上的壓力。

  B-多相測頻技術分析

當數據量大,且要求較高時頻分辨率時,可以借助多相結構來實現FFT的運算思路。

信號STFT重寫為:

技術分享

對應多相FFT實現思路:抽取 - 乘以對應抽取的窗函數 - FFT變換 - 乘法器(補償因子) - 並行FFT處理 - 並串轉換。

二、仿真驗證

對應代碼實現:

clc;clear all;close all;
%orignal signal
fs = 200;
f0 = 30;
t = 0:1/fs:2;
x = sin(2*pi*f0*t‘);
Na = 2^nextpow2(length(x));
sig = [x;zeros(Na-length(x),1)];
%polyphase FFT
N=16;M=Na/N;
sr = reshape(sig,M,N).‘;
sr = fft(sr);
P = exp(-1j*2*pi*[0:N-1]‘*[0:M-1]/M/N);
sr=sr.*P;
sr = fft(sr.‘).‘;
%save result
X_CaFFT = sr(:);
%plot
xf = linspace(0,fs,Na);
plot(xf,abs(X_CaFFT),‘k‘);grid on;hold on;
xlabel(‘頻率(Hz)‘);
ylabel(‘幅度‘);

  對應仿真結果:

技術分享

主要實現架構:

技術分享

合成模塊技術細節:

技術分享

此處的乘法器,對應算法實現,可以是直接的乘法器 / 也可以是乘法器(相位因子相乘)與FFT的級聯實現。

傅裏葉變換(FFT)的多相濾波結構實現