資源簡介
多相濾波數字信道化結構在 MATLAB中的實現

代碼片段和文件信息
function?sigs?=?polyPhaseFilter(sigDfnwt)
%?polyPhaseFilter?多相濾波信道化實現
%?sig??信道化輸入數據,為列向量
%?D????信道化個數(default:?D?=?8)
%?fn???濾波器階數,要求是D?的整數倍(default:?fn?=?255)
%?wt???過渡帶帶寬(0~1default:?wt?=?1/(2*D))
%?sigs?信道化后的輸出數據,每一列為一個信道的輸出
%
%?Example?:?
%??????%?生成線性調頻信號
%??????N?=?4096;????????%?信號長度
%??????fnormi?=?-0.5;???%?起始頻率
%??????fnormf?=?0.5;????%?終止頻率
%??????y?=?(1:N)‘;
%??????y?=?fnormi*y?+?((fnormf-fnormi)/(2.0*(N-1)))?*?((y-1).^2);
%??????sig?=?exp(j*2.0*pi*y);
% ???sigs?=?polyPhaseFilter(sig166390.3)
?
%?Author????:?Jackie?Wang
%?Email?????:?falwat@163.com
%?QQ????????:?1522011218
%?Date??????:?2017/05/31
%
%?Copyright?(c)?2017?by?Jackie?Wang(China).
%?All?rights?reserved.
if?nargin==1
????D?=?8;??fn?=?255;?wt?=?1/(2*D);
elseif?nargin==2
????fn?=?255;?wt?=?1/(2*D);
elseif?nargin==3
????wt?=?1/(2*D);
end
%?數據抽取
Polyphase_signal?=?reshape(sigDlength(sig)/D);
Polyphase_signal?=?flipud(Polyphase_signal);
[mmnn]=size(Polyphase_signal);
%?原型濾波器
original_fir?=?firgr(fn[0?1/D*(1-wt/2)??1/D*(1+wt/2)??1][1?1?0?0]);
%?多相濾波系數抽取
Polyphase_fir?=?reshape(original_firDlength(original_fir)/D);
%?濾波器前?指數相乘
Signal_mul?=?zeros(mmnn);
nv?=?0:nn-1;
for?ii=1:mm
????Signal_mul(ii:)?=?Polyphase_signal(ii:).*(-1).^nv;
%?????Signal_mul(ii:)?=?Polyphase_signal(ii:)*(-1)^ii.*?exp(1i*pi*(nv*D-ii)/D);
end
%?濾波
Signal_fir?=?zeros(mmnn);
for?ii?=?1:mm
Signal_fir(ii:)?=?filter(Polyphase_fir(ii:)1Signal_mul(ii:));
end
%?FFT?前指數相乘
Signal_pre_fft?=?zeros(mmnn);
for?ii?=?1:mm
Signal_pre_fft(ii:)?=?Signal_fir(ii:)*(-1)^ii*?exp(-1i*pi*ii/D);
end
%?D?點?FFT
Signal_fft?=?zeros(mmnn);
for?jj?=?1:nn
Signal_fft(:jj)?=?fft(Signal_pre_fft(:jj)D);
end
sigs?=?Signal_fft‘;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-05-31?12:52??polyPhaseFilter\
?????文件????????1894??2017-05-31?12:59??polyPhaseFilter\polyPhaseFilter.m
?????文件?????????792??2017-05-31?12:51??polyPhaseFilter\test_polyPhaseFilter.m
- 上一篇:相空間重構 matlab 代碼
- 下一篇:廣義互相關計算時延
評論
共有 條評論