资源简介
结合具体应用,以2倍抽取为例,简要分析了多相滤波的基本原理及具体实现方法,并附带了matlab代码,从实验结果可以看出多相滤波可以实现与传统FIR滤波相同的功能。
代码片段和文件信息
clc
clear all;
close all;
%---------------------普通FIR滤波器---------------------------------%
b=[12345];
a=1;%由freqz(ba)分析得到了wc=0.209对应频率值为0.209*1e3/2=104.5Hz
freqz(ba);
fs=1e3;%采样率
ts=1/fs;%采样周期
f1=20;
f2=400;
t=0:ts:1-ts;
x=cos(2*pi*f1*t)+cos(2*pi*f2*t);
y=filter(bax);
freqz(ba);%传统FIR滤波器特性图
figure;
subplot(411);
plot(tcos(2*pi*f1*t));
title(‘原始信号‘)
subplot(412);
plot(tx);
title(‘混合信号‘)
subplot(413);
plot(t(1:2:end)y(1:2:end));
title(‘传统FIR滤波‘);
%---------------------多相FIR滤波器---------------------------------%
%---------------------多相FIR结构式---------------------------------%
% H(Z)=1+2z^(-1)+3z^(-2)+4z^(-3)+5z^(-4)
% H(Z)=[1+3z^(-2)+5z^(-4)]+z^(-1)[2+4z^(-2)]
% H(Z)=E0(Z^2)+E1(Z^2)
% E0=1+3z^(-1)+5z^(-2) ,E1=2+4z^(-1)
%---------------------多相FIR结构式---------------------------------%
b_0=[135]; %多相第一级对应的分子系数,对应E1
b_1=[24]; %多相第二级对应的分子系数,对应E2
a_0=a;
a_1=a;
x_0=[x 0];
x_1=[0 x]; %多相结构,增加一个延时,此延时是在抽取之前添加的
x_0=x_0(1:2:end); %D=2,两倍抽取
x_1=x_1(1:2:end);
y_0=filter(b_0a_0x_0);%多相滤波第一个支路
y_1=filter(b_1a_1x_1);%多相滤波第二个支路
y1=y_0+y_1;
subplot(414);
plot(t(1:2:end)y1(1:end-1));
title(‘多相FIR滤波‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 87552 2014-04-02 13:59 polyphase_analysis.doc
文件 1367 2014-04-02 13:13 polyphase_filter.m
----------- --------- ---------- ----- ----
88919 2
- 上一篇:卷积码发生器的设计
- 下一篇:matlab esn工具箱
评论
共有 条评论