我是靠谱客的博主 老迟到钻石,这篇文章主要介绍数字信号处理matlab训练第【3】弹--求取离散系统的输出1.LSI系统的转移函数2.matlab编程训练,求系统的阶跃响应3.参考文章,现在分享给大家,希望可以做个参考。

数字信号处理matlab训练【3】

  • 1.LSI系统的转移函数
    • 1.1 频率响应
    • 1.2 转移函数
    • 1.3 差分方程
    • 1.4 卷积关系
    • 1.5 系统的转移函数$H(Z)$
  • 2.matlab编程训练,求系统的阶跃响应
    • 2.1 编程实训
    • 2.2 求取系统的单位抽样响应h(n)
    • 2.3 求上述系统的频率响应
  • 3.参考文章

1.LSI系统的转移函数

对于一个线性时不变离散时间系统(如下图所示),我们在之前就已经接触到了4种不同的描述方法。

在这里插入图片描述

1.1 频率响应

H ( e j ω ) = ∑ n = 0 ∞ h ( n ) e − j ω n H(e^{jomega})=sum_{n=0}^{infty}h(n)e^{-jomega n} H(ejω)=n=0h(n)ejωn

1.2 转移函数

H ( z ) = ∑ n = 0 ∞ h ( n ) z − n H(z)=sum_{n=0}^{infty}h(n)z^{-n} H(z)=n=0h(n)zn

1.3 差分方程

y ( n ) = − ∑ k = 1 N a ( k ) y ( n − k ) + ∑ r = 0 M b ( r ) x ( n − r ) y(n)=-sum_{k=1}^Na(k)y(n-k)+sum_{r=0}^Mb(r)x(n-r) y(n)=k=1Na(k)y(nk)+r=0Mb(r)x(nr)

1.4 卷积关系

y ( n ) = x ( n ) ∗ h ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k ) y(n)=x(n)*h(n)=sum_{k=-infty}^infty x(k)h(n-k) y(n)=x(n)h(n)=k=x(k)h(nk)
上边的4种方法从不同的角度描述了一个LSI系统的物理特性,他们之间有着密切的联系,其联系的纽带就是系统的单位冲激响应 h ( n ) h(n) h(n)

1.5 系统的转移函数 H ( Z ) H(Z) H(Z)

对上边的第三式两边取Z变换,得
Y ( z ) = − Y ( z ) ∑ k = 1 N a ( k ) z − k + X ( z ) ∑ r = 0 M b ( r ) z − r Y ( z ) [ 1 + ∑ k = 1 N a ( k ) z − k ] = X ( z ) [ b ( 0 ) + ∑ r = 1 M b ( r ) z − r ] Y(z)=-Y(z)sum_{k=1}^Na(k)z^{-k}+X(z)sum_{r=0}^Mb(r)z^{-r}\ quad \Y(z)[1+sum_{k=1}^Na(k)z^{-k}]=X(z)[b(0)+sum_{r=1}^Mb(r)z^{-r}] Y(z)=Y(z)k=1Na(k)zk+X(z)r=0Mb(r)zrY(z)[1+k=1Na(k)zk]=X(z)[b(0)+r=1Mb(r)zr]
对上边的式子进行整理可得
H ( z ) = Y ( z ) X ( z ) = ∑ r = 0 M b ( r ) z − r 1 + ∑ k = 1 N a ( k ) z − k H(z)=frac{Y(z)}{X(z)}=frac{sum_{r=0}^Mb(r)z^{-r}}{1+sum_{k=1}^Na(k)z^{-k}} H(z)=X(z)Y(z)=1+k=1Na(k)zkr=0Mb(r)zr
上式 H ( z ) H(z) H(z)就被称为系统的转移函数。它即可以定义为系统单位抽样响应 h ( n ) h(n) h(n)的z变换,也可以 定义为系统的输出、输入Z变换之比。

2.matlab编程训练,求系统的阶跃响应

我们之前学过的,如果已经知道系统的 h ( n ) h(n) h(n),由于 y ( n ) = x ( n ) ∗ h ( n ) y(n)=x(n)*h(n) y(n)=x(n)h(n),则我们可以轻松的使用conv函数将其求得,但是如果我们不知道 h ( n ) h(n) h(n),已知 Y ( z ) Y(z) Y(z) X ( z ) X(z) X(z),需要求 y ( n ) y(n) y(n),则我们可以根据公式,
y ( n ) = − ∑ k = 1 N a ( k ) y ( n − k ) + ∑ r = 0 M b ( r ) x ( n − r ) = b ( 1 ) x ( n ) + b ( 2 ) x ( n − 1 ) + . . . + b ( n b + 1 ) x ( n − n b ) − a ( 2 ) y ( n − 1 ) − . . . − a ( n a + 1 ) y ( n − n a ) y(n)=-sum_{k=1}^Na(k)y(n-k)+sum_{r=0}^Mb(r)x(n-r)\ quad \=b(1)x(n)+b(2)x(n-1)+...+b(n_b+1)x(n-n_b)\ quad \-a(2)y(n-1)-...-a(n_a+1)y(n-n_a) y(n)=k=1Na(k)y(nk)+r=0Mb(r)x(nr)=b(1)x(n)+b(2)x(n1)+...+b(nb+1)x(nnb)a(2)y(n1)...a(na+1)y(nna)
求取我们的 y ( n ) y(n) y(n),使用matlab内的一个函数 y = f i l t e r ( b , a , x ) y=filter(b,a,x) y=filter(b,a,x)其中 x 、 y 、 a 和 b x、y、a和b xyab都是向量。

2.1 编程实训

已知一个系统的转移函数如下所示:
H ( z ) = 0.001836 + 0.007344 z − 1 + 0.011016 z − 2 + 0.007374 z − 3 + 0.001836 z − 4 1 − 3.0544 z − 1 + 3.8291 z − 2 − 2.2925 z − 3 + 0.55075 z − 4 H(z)=frac{0.001836+0.007344z^{-1}+0.011016z^{-2}+0.007374z^{-3}+0.001836z^{-4}}{1-3.0544z^{-1}+3.8291z^{-2}-2.2925z^{-3}+0.55075z^{-4}} H(z)=13.0544z1+3.8291z22.2925z3+0.55075z40.001836+0.007344z1+0.011016z2+0.007374z3+0.001836z4
求该系统的阶跃响应。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%%转移函数 clc; clear; x=ones(100,1); %定义阶跃输入 t=1:100; b=[0.001836,0.007344,0.011016,0.007374,0.001836]; %定义向量b a=[1,-3.0544,3.8291,-2.2925,0.55075]; %定义向量a y=filter(b,a,x); %得到y(n) hold on h1=plot(t,x,'b'); h2=plot(t,y,'r'); hold off %画图结束 legend([h1,h2],'阶跃输入','阶跃响应'); %添加标注

其运行结果为:
在这里插入图片描述

2.2 求取系统的单位抽样响应h(n)

在我们得到上边的情况下,如果我们想要得到该系统的单位抽样响应,编辑mtalab代码如下:

复制代码
1
2
3
4
5
6
[h,t]=impz(b,a,40); %h(n)的长度为N=40 stem(t,h,'.'); %绘制离散的h(n) grid on;

其显示结果如下所示:
在这里插入图片描述

2.3 求上述系统的频率响应

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
%%得到系统的频率响应 [H,w]=freqz(b,a,256,'whole',1); %whole 指定计算的频率范围是0-Fs,此处我们设置Fs=1 Hr=abs(H); %得到绝对值,也就是幅度值 plot(w,Hr,'r','linewidth',2); %绘制图形,并且设置颜色和线宽 grid on; %显示方格 xlabel('omega /2pi'); ylabel('|H(e^{jomega})|'); title('幅频响应') %坐标轴设置

输出图像如下所示:
在这里插入图片描述

3.参考文章

数字信号处理理论、算法与实现(第三版)

最后

以上就是老迟到钻石最近收集整理的关于数字信号处理matlab训练第【3】弹--求取离散系统的输出1.LSI系统的转移函数2.matlab编程训练,求系统的阶跃响应3.参考文章的全部内容,更多相关数字信号处理matlab训练第【3】弹--求取离散系统内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部