- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验 实验日期: 2017.6.2
班级: 数媒1403 姓名: 李欣 学号: 1030514327
一、实验目的
三、实验步骤
(以实验材料第二部分“FIR滤波器结构及其MATLAB实现”为例,给出实验步骤描述、相关代码等。)
解:FIR直接型系统函数表示
FIR结构的直接形式由包含系数{ n b }的行向量b 描述。在MATLAB中,把分母矢量a置为1,这种结构用filter函数实现。
直接型的代码实现
impseq.m
function [n,x] = impseq(np,ns,nf)
%《数字信号处理教程――MATLAB释义与实现》
% 单个脉冲序列生成子程序
% 电子工业出版社出版 陈怀琛编著 2004年9月
%
% 产生 x(n) = delta(n-np); ns = n,np = nf
% ----------------------------------------------
% [x,n] = impseq(np,ns,nf)
% np=阶跃信号施加的位置
% ns=序列的起点位置
% nf=序列的终点位置
%
n = ns:nf; % 生成位置向量
x = (n-np) == 0; % 生成单个脉冲序列
%x = [zeros(1,(np-ns)), 1, zeros(1,(nf-np))]; % 生成单个脉冲序列的另一种语句
n=0:5;
b=0.2.^n;
N=30;
delta=impseq(0,0,N);
h=filter(b,1,delta);%
x=[ones(1,5),zeros(1,N-5)];
y=filter(b,1,x);%
subplot(2,2,1);stem(h);title(直接型h(n));
subplot(2,2,2);stem(y);title(直接型y(n));
FIR级联型系统函数表示为即级联型FIR 滤波器可以通过casfiltr 函数实现。但这种形式与IIR 形式类似,也可以使用
dir2cas函数,把分母矢量a置为1,用cas2dir函数从级联形式转换为直接形式而获得。
级联型代码实现
dir2cas.m
function [ b0,B,A]=dir2cas(b,a);
% 直接型到级联型的形式转换(复数对型);
% ——————————————————
% [b0,B,A]=dir2cas(b,a);
% b=直接型的分子多项式系数
% a=直接型的分母多项式系数
% b0=增益系数
% B=包含各bk的K乘3维实系数矩阵
%A=包含各ak的K乘3维实系数矩阵
% 计算增益系数b0
b0=b(1);b=b/b0;
a0=a(1);a=a/a0;
b0=b0/a0;
%
M=length(b);N=length(a);
if N M
b=[b zeros(1,N-M)];
elseif M N
a=[ a zeros(1,M-N)];N=M;
else
NM=0
end
%
K=floor(N/2);B=zeros(K,3);A=zeros(K,3);
if K*2==N;
b=[b 0];
a=[a 0];
end
%
broots=cplxpair(roots(b));
aroots=cplxpair(roots(a));
for i=1:2:2 *K
Brow=broots(i:1:i+1,:);
Brow=real(poly(Brow));
B(fix((i+1)/2),:)=Brow;
Arow=aroots(i:1:i+1,:);
Arow=real(poly(Arow));
A(fix((i+1)/2),:)=Arow;
end
castfiltr.m
function y=casfiltr(b0,B,A,x);
% IIR各FIR滤波器的级联型的实现
% ——————————————
% y=casfiltr(b0,B,A,x);
% y=输出序列
% b0=级联型的增益系数
% B=包含各bk和K乘3维实系数矩阵
%A=包含各ak的K乘3维实系数矩阵
% x=输入序列
%
[K,L]=size(B);
N=length(x);
w=zeros(K+1,N);
w(1,:)=x;
for i=1:1:K
w(i+1,:)=filter(B(i,:),A(i,:),w(i,:));
end
y=b0 * w(K+1,:);
[b0,B,A]=dir2cas(b,1);
h=casfiltr(b0,B,A,d
文档评论(0)