MATLAB中d2c函数用法

目录

语法

说明

示例

将离散时间传递函数转换为连续时间

将识别出的离散时间传递函数转换为连续时间

在将已识别的离散时间传递函数模型转换为连续时间模型后,重新生成协方差信息


        d2c函数的功能是将模型从离散时间转换为连续时间。

语法

sysc = d2c(sysd)
sysc = d2c(sysd,method)
sysc = d2c(sysd,opts)
[sysc,G] = d2c(___)

说明

        d2c(sysd)函数用于将离散时间动态系统模型sysd转换为连续时间模型,转换过程中采用对输入信号的零阶保持(zero-order hold)方式。

        d2c(sysd, method)允许指定转换方法。

        d2c(sysd, opts)允许指定用于离散化的转换选项。

        [sysc, G] = d2c(___),其中sysd是一个状态空间模型,返回一个矩阵G,将离散时间状态空间模型的状态xd[k]映射到sysc的连续时间状态xc(t)。

示例

将离散时间传递函数转换为连续时间

创建以下离散时间传递函数:

H = tf([1 -1],[1 1 0.3],0.1);

        该模型的采样时间为Ts=0.1秒。推导出一个连续时间的零阶保持(zero-order-hold)等效模型。

Hc = d2c(H)
Hc =
 
   121.7 s + 1.758e-12
  ---------------------
  s^2 + 12.04 s + 776.7

        使用默认的零阶保持方法和采样时间0.1秒对得到的连续时间模型Hc进行离散化,以返回原始的离散模型H。

c2d(Hc,0.1)
ans =
 
      z - 1
  -------------
  z^2 + z + 0.3

采样时间:0.1秒 离散时间传递函数。

使用Tustin逼近方法将H转换为一个连续时间模型。

Hc2 = d2c(H,'tustin');

对得到的连续时间模型Hc2进行离散化,以获得原始的离散时间模型H。

c2d(Hc2,0.1,'tustin');

将识别出的离散时间传递函数转换为连续时间

        估算一个离散时间传递函数模型,并将其转换为一个连续时间模型。

load iddata1
sys1d = tfest(z1,2,'Ts',0.1);
sys1c = d2c(sys1d,'zoh');

估算一个连续时间传递函数模型。

sys2c = tfest(z1,2);

比较sys1c和直接估算的连续时间模型sys2c的响应。

compare(z1,sys1c,sys2c)

如图所示:

        这两个系统几乎是相同的。

在将已识别的离散时间传递函数模型转换为连续时间模型后,重新生成协方差信息

        将已识别的离散时间传递函数模型转换为连续时间模型。

load iddata1
sysd = tfest(z1,2,'Ts',0.1);
sysc = d2c(sysd,'zoh');

        sys1c没有协方差信息。d2c操作会导致已识别模型的协方差数据丢失。使用相同的估算命令和估算数据进行零迭代更新,重新生成协方差信息。

opt = tfestOptions; 
opt.SearchOptions.MaxIterations = 0;
sys1c = tfest(z1,sysc,opt);

分析频率响应不确定性的影响。

h = bodeplot(sysd,sys1c);
showConfidence(h,3)

如图所示:

        sys1c和sysd的不确定性在Nyquist频率之前是可比较的。然而,在估算数据未提供任何信息的频率范围内,sys1c显示出较大的不确定性。

        如果你无法访问估算数据,请使用translatecov命令,该命令是一种基于高斯逼近公式的协方差在不同模型类型转换操作中的翻译方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值