matlab零阶保持器法求z变换,教你快速求解闭环脉冲传递函数φ(z)或输出Z变换C(z)!...

176741229_1_20191129120643922_wm

大家好,我是宝刀君,很高兴我们又见面了~

在离散系统分析中,大家刚开始学习时,会遇到2类题:一类是没有采样开关,让你求系统的输出Z变换C(z);另一类是有采样开关时,让你求系统的闭环脉冲传递函数,进而进行后续的系统稳定性分析φ(z)。

难吗?

会的不难,不会的难。

那如何从“不会”跃迁到“会”呢?

我觉得你只要懂梅逊增益公式的理论,然后经今天我这篇文章的点拨,下来好好琢磨下,多加练习,一定可以掌握!

什么,梅逊增益公式?

那不是连续系统里时域分析中根据结构图直接一步到位写闭环传递函数(或误差传递函数)的吗?怎么又跑到离散系统中了?这两部分又有什么关系呢?

莫急莫急,听我慢慢道来,下面我会一步步演示,你只管备好茶,悠哉悠哉的慢慢往下看即可。

1

零阶保持器

这是课本上关于零阶保持器的定义、作用,虽然课本已被涂写的面目全分,但是大部分内容还是可以看见的,大家忍一忍,后面我会附精美PPT图:

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果已知一个复数域的传递函数,可以通过部分分式法将其转化为带零阶保持的Z传递函数。具体步骤如下: 1. 首先,将复数域的传递函数表示为多项式的形式,例如: H(s) = (s+1) / (s^2 + 2s + 2) 2. 对分母进行因式分解,得到: H(s) = (s+1) / [(s+1+j)(s+1-j)] 3. 使用部分分式法将上式拆分为两个简单的分式: H(s) = A / (s+1+j) + B / (s+1-j) 其中,A和B是待求的系数。 4. 解出A和B的值: A = [H(s) * (s+1-j)] |s=-1-j B = [H(s) * (s+1+j)] |s=-1+j 5. 将A和B的值代入上式,得到Z域传递函数: H(z) = A / (z-(1+j)) + B / (z-(1-j)) 6. 将上式进行化简,得到带零阶保持的Z传递函数: H(z) = [A(z-z0) / (z-p1)] + [B(z-z0) / (z-p2)] 其中,z0是零点,p1和p2是极点。 下面是一个MATLAB示例代码,演示如何通过部分分式法将复数域的传递函数转化为带零阶保持的Z传递函数: ```matlab % 定义复数域传递函数 H(s) = (s+1) / (s^2 + 2s + 2) Hs = tf([1 1], [1 2 2]); % 分解分母 [p, z] = pzmap(Hs); % 求解系数A和B A = evalfr(Hs, -1-j); B = evalfr(Hs, -1+j); % 构造Z域传递函数 Hz = tf([A B], [1 -(1+j) -(1-j)]); % 将Z域传递函数进行零极点分解 [z, p, k] = zpkdata(Hz); % 构造带零阶保持的Z传递函数 z0 = z(1); Hz_zoh = zpk(z0, [p(1) p(2)], k); % 绘制频率响应函数的幅度特性 w = linspace(0, 2*pi, 1000); [mag, ~] = bode(Hs, w); [mag_zoh, ~] = bode(Hz_zoh, w); figure; semilogx(w, 20*log10(mag), 'b', w, 20*log10(mag_zoh), 'r--'); xlabel('\omega'); ylabel('Magnitude (dB)'); legend('Original', 'With ZOH'); grid on; ``` 运行代码后,会得到复数域传递函数和带零阶保持的Z传递函数的频率响应函数的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值