我如何将系统延迟从连续从离散的离散和连续,结果是一样的吗?

27日视图(30天)
我怎么运行这段代码,第一和第三个结果是相同的吗?
sys =特遣部队(1 (1)“InputDelay”,0.4)
sysd =汇集(sys, 0.3)
sysagain = d2c (sysd)

接受的答案

Fangjun江
Fangjun江 2011年6月10日
当你连续传递函数转换为离散样本时间为0.3,每一步发生在《纽约时报》的0.3,0.3,0.6,0.9……所以当你的连续传递函数有0.4延迟,你转换失去准确性或我应该说你转换不做正确。看离散传递函数,它是z ^(2)这意味着0.6秒延迟。你也可以看到它,当你把它回到连续的。所以问题不是样品时间和延迟是相关的。问题是你的样品时间不合适,具体的延迟时间。
> > sys =特遣部队(1 (1)“InputDelay”,0.4)
转移功能:
1
exp (-0.4 *) * - - - - - -
s + 1
> > sysd =汇集(sys, 0.3)
转移功能:
0.1813 z + 0.07791
z ^ (2) * - - - - - - - - - - - - - - - - - -
z - 0.7408
抽样时间:0.3
> > sysagain = d2c (sysd)
转移功能:
0.1813 s + 1
exp (-0.6 *) * - - - - - - - - - - - -
s + 1

更多的答案(5)

卡拉
卡拉 2011年6月10日
当离散化模型与采样时间不符合你的时间延迟,您可以使用c2dOptions告诉c2d近似剩余部分由一个离散时间延迟全通滤波器:
sys =特遣部队(1 (1)“InputDelay”,0.4);
选择= c2dOptions (“方法”,“tustin”,“FractDelayApproxOrder”3);
sys_d =汇集(sys, 0.3,选择);
你仍然不能恢复原来的连续时间模型通过与d2c转换回连续时间,因为全通滤波器接近分数延时对模型添加额外的国家。
但是,如果你担心就扔掉,小数部分的时间延迟,使用此选项可能会有所帮助。(R2010a之后)。
有关更多信息,请参见:
医生汇集
网站([docroot' /工具箱/控制/ ug / f2 - 3161. - html”])
对于后者,找例子,题为“Tustin近似与时间延迟系统。”

伊凡van der克朗
伊凡van der克朗 2011年6月10日
tf在这种情况下,样品时间应该是一个整数倍c2d的样品时间。你可以试着为任意整数n
sys =特遣部队(1 (1)“InputDelay”,)
d2c(汇集(sys / n))
只是不要靠近两极接近于零。

Arnaud Miege
Arnaud Miege 2011年6月10日
我同意伊凡和Fangjun。尝试以下代码,您将看到MATLAB命令窗口的警告:
sys =特遣部队(1 (1)“InputDelay”,0.4);
c2d_methods = {“zoh”,“呸”,“冲动”,“tustin”,“匹配”};
d2c_methods = {“zoh”,“tustin”,“匹配”};
i = 1:长度(c2d_methods)
j = 1:长度(d2c_methods)
试一试
sysd (i, j) =汇集(sys, 0.3, c2d_methods{我});% #好< * SAGROW >
% #好< * CTCH >
disp ([“错误与汇集方法”c2d_methods{我}]);
结束
试一试
sysagain (i, j) = d2c (sysd (i, j), d2c_methods {j});
disp ([“错误d2c方法”d2c_methods {j}]);
结束
结束
结束
波德(系统)
持有
i = 1:长度(c2d_methods)
j = 1:长度(c2d_methods)
波德(sysagain (i, j));
结束
结束


莱斯Akhmetsafin
莱斯Akhmetsafin 2018年4月10日
编辑:莱斯Akhmetsafin 2018年4月10日
clc
清除所有
τ= 0.7;
t = 0.5;
特遣部队(H = 1 [1 1.8。9] InputDelay,τ)
赫兹=汇集(H, ts, zoh)
H1 = d2c (Hz, zoh)
disp(问题! ! !)
H2 = d2c_with_zoh (Hz)
disp(好! ! !)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
函数sysc = d2c_with_zoh (sysd)
% %莱斯Akhmetsafin 2016
eps1 =每股收益* 1 e10汽油;
BZ = sysd.num {1};阿兹= sysd.den {1};ts = sysd.Ts;
d = sysd.InputDelay;
如果BZ (1) ~ = 0;d = d + 1;结束
阿兹= fliplr (AZ);BZ = fliplr (BZ);
= conv (az, [1]);
z K [g] =残渣(,);
s =日志(z) / ts;圣= s。* ts;stl1 = g;
引出= 0;z_1 = z。^ (-1.0 -eps1);
真正的(和(stl1) * (stl1。* z_1)) > 0
引出=引出+ 1;
stl = stl1;stl1 = stl。*圣;
结束
X0 = 0.5;麦克斯特= 50;Iter = 0;= 0;
stl = stl1;stl1 = stl。*圣;
(~)& (Iter <麦克斯特)
Iter = Iter + 1;
X = X0 (stl。”* (z。^ (X0))) / (stl1。”* (z。^ (X0)));
做= abs (X - X0) < = eps1;
X0 = X;
结束;
X =真正的(X);c = - g . * z。^ (- x);
(BS) =残留(c、s、K);
=真正的();b =实际(BS);
一样= (1:end-1);b = b(2 +引出:结束);
τ= (d + x - 1) * ts;
sysc = sysd;
sysc。t = 0;sysc。变量=“年代”;
sysc。InputDelay =τ;
sysc。ioDelay = 0;
sysc。num {1} = b;sysc.den{1} =一样;
结束

类别

找到更多的在Colormaps帮助中心文件交换

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!