山东大学数字信号处理实验:IIR 数字滤波器的级联结构

【实验目的】

加深对IIR数字滤波器的级联结构的理解,掌握应用Matlab实现给定系统的级联结构。

【实验内容】

利用 MATLAB 编程将给定直接结构的系统用级联结构来实现,要求如下:

编写一个通用的函数,输入参数为直接形式的系统函数分母分子中的各阶系数

A=(a0,a1,…,aN) ,B=(b0,b1,…,bN)。输出为矩阵E和F,其中E和F的每一行分别代表一个二阶节(一阶节可看做二阶节的特例)中分母和分子中的系数。

   给定一个系统,利用编写的函数求出级联结构中各个二阶节的系数,画出系统的级联结构图。

一个系统由如下的差分方程给出,编写求级联结构各二阶节系数的函数,用主程序调用该函数求出该系统各级二阶节的系数,根据程序运行结果,画出该系统的级联结构。

13y(n)+8y(n-1)+2y(n-2)-4y(n-3)-y(n-4)=2x(n)-3x(n-1)+9x(n-2)-26x(n-3)+18x(n-4)

【实验步骤】

实验代码及注释如下:

main.m如下

%主程序main.m 调用函数TheCalledFunction.m
n = input('输入阶数:');
char coefficient_Y(i) coefficient_X(i);
%循环输入Y的系数
for i=1:n
    coefficient_Y(i)=input('输入Y的系数:')
end
%循环输入X的系数
for j=1:n
    coefficient_X(j)=input('输入X的系数:')
end
E=TheCalledFunction(coefficient_Y)%调用函数,求出Y的多项式结果
F=TheCalledFunction(coefficient_X)%调用函数,求出X的多项式结果

调用的TheCalledFunction.m如下

function cal=TheCalledFunction(xxi)
N=length(xxi);%求多项式长度
root=roots(xxi);%求根
sort=cplxpair(root);%将求出的根按照复共轭对进行排序
k=(N-1)/2;%计算级联个数
%下面的循环确定最终的多项式,poly将一对根转化为对应的多项式
for J=1:k
    sortpro=[sort(2*J-1) sort(2*J)];
    cal(J,:)=poly(sortpro);
end

【实验结果及分析】

Matlab运行截图

实验结果:

>> clear

>> main

输入阶数:5

输入Y的系数:13

coefficient_Y =

    13

输入Y的系数:8

coefficient_Y =

    13     8

输入Y的系数:2

coefficient_Y =

    13     8     2

输入Y的系数:-4

coefficient_Y =

    13     8     2    -4

输入Y的系数:-1

coefficient_Y =

    13     8     2    -4    -1

输入X的系数:2

coefficient_X =

     2

输入X的系数:-3

coefficient_X =

     2    -3

输入X的系数:9

coefficient_X =

     2    -3     9

输入X的系数:-26

coefficient_X =

     2    -3     9   -26

输入X的系数:18

coefficient_X =

     2    -3     9   -26    18

E =

    1.0000    0.9324    0.5817

    1.0000   -0.3170   -0.1322

F =

    1.0000    1.0784    5.7021

1.0000   -2.5784    1.5784

级联结构图如下:

© 版权声明
THE END
喜欢就支持以下吧
点赞0赞赏
分享
评论 抢沙发

请登录后发表评论