matlab实现从s域变成z域、matlab实现长除法逆z变换实例

        今天在复习微型计算机控制技术这门课时,感觉还是和当初学习时一样,计算量有点大。

主要是体现在:(1)、连续S域到离散Z域的变换。(2)、在画数字控制器和输出波形前对Y(z)和U(z)的长除法化简。

介绍matlab帮助计算的方法。

题目:

一、连续S域到离散Z域的变换

(1)、计算对象

(2)、matlab实现及注释

clc
clear
%构造传递函数
H = tf(10, [1 1 0])
%10是分子,[1 1 0]是分母参数

%Z变换
G = c2d(H, 1,'zoh') 
%H(s)是传递函数;1是采样周期,题目中告诉t=1s;'zoh'表示采用离散的方法

%得到分子分母系数
[num den] = tfdata(G, 'v')
%v参数可以让得到的输出值由元胞数组变为数组

%得到零极点
[z, p, k] = tf2zpk(num, den)
%z是零点,p是极点,k是增益

结果:

H =
 
    10
  -------
  s^2 + s
 
Continuous-time transfer function.


G =
 
     3.679 z + 2.642
  ----------------------
  z^2 - 1.368 z + 0.3679
 
Sample time: 1 seconds
Discrete-time transfer function.


num =

         0    3.6788    2.6424


den =

    1.0000   -1.3679    0.3679


z =

   -0.7183


p =

    1.0000
    0.3679


k =

    3.6788

c2d()函数的作用是将s域的表达式转化成z域的表达式,s=0对应z=1。

c2d()函数转化的方法有多种:

①zoh, 零阶保持器法,又称阶跃响应不变法;

②foh ,一阶保持器法

③tustin ,双线性变换法

④ imp, 脉冲响应不变法

原理:


 

二、在画数字控制器和输出波形前对Y(z)和U(z)的长除法化简

(1)、计算对象

(2)、matlab实现

function res = longDiv(nom, den, bit)
    if nargin < 3
        bit = length(den) * 2;
    end
    if length(den) < length(nom)
        disp('error z transform');
        return;
    end
    if length(den) ~= length(nom)
       nom = [zeros(1, length(den) - length(nom))   , nom]; 
    end

    res = [];
    m = nom;
    for i = 1 : bit
        tempRes = m(1)/den(1);
        m = m - tempRes * den;
        m = [m(2:length(m)), 0];
        res = [res tempRes];
    end
end

点击运行:

鼠标放在longDiv处右击编辑进行参数输入

点击运行得到结果:可得到结果、画图。

 

点个赞,后天计控考试稳过

 

 

 

 

 

 

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值