今天在复习微型计算机控制技术这门课时,感觉还是和当初学习时一样,计算量有点大。
主要是体现在:(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处右击编辑进行参数输入
点击运行得到结果:可得到结果、画图。
点个赞,后天计控考试稳过