sim卡

识别模型的模拟响应

描述

例子

y= SIM(SYS,UDATA)返回使用输入数据的标识的模型的模拟响应,UDATA。默认情况下,用于所有模型类型除了零个初始条件idnlgrey,在这种情况下,将使用存储在模型内部的初始条件。

例子

y= SIM(SYS,UDATA,选择)所使用的选项设置,选择,以配置模拟选项,包括初始条件的规范。

例子

(y,y_sd] = SIM(___)返回估计的标准差,y_sd中,模拟响应的。

例子

(y,y_sd,x] = SIM(___)返回的状态轨迹,x,对于状态空间模型。

例子

(y,y_sd,x,x_sd] = SIM(___)返回状态轨迹的标准偏差,x_sd,对于状态空间模型。

例子

SIM(___)绘制识别模型的模拟响应。

例子

全部折叠

加载估计数据。

负载iddata2Z2

估计三阶状态空间模型。

sys = ss (z2, 3);

使用来自估计数据的输入通道模拟已识别的模型。

Y = SIM(SYS,Z2);

加载数据,并获得识别的模型。

负载iddata2Z2sys = n4sid (z2, 3);

SYS是使用子空间方法来估计的第三阶状态空间模型。

建立仿真选项设置为噪声添加到模拟模型响应。

opt1 = simOptions ('AddNoise',真正);

模拟模型。

Y = SIM(SYS,Z2,OPT1);

通过模型的噪声传递函数过滤默认的高斯白噪声,并将其添加到模拟模型响应中。

您也可以添加自己的噪声信号,e, 使用NoiseData选项。

e = randn(长度(z2.u), 1);opt2 = simOptions ('AddNoise',真正,'NoiseData',e);

模拟模型。

Y = SIM(SYS,Z2,OPT2);

加载数据。

负载iddata1Z1

指定估计初始状态估计选项。

estimOpt = ssestOptions (“初始化状态”,'估计');

估计状态空间模型,并返回所估计的初始状态的值。

[sys, x0] = ss (z1 2 estimOpt);

指定模拟的初始条件

simOpt = simOptions('初始条件',x0);

模拟模型,并获得模型响应和标准偏差。

[Y,y_sd] = SIM(SYS,Z1,simOpt);

负载估计数据,并估计一个状态空间模型。

负载iddata1Z1SYS = ssest(z1,2);

返回的标准差和状态轨迹。

[Y,y_sd,X] = SIM(SYS,Z1);

负载估计数据,并估计一个状态空间模型。

负载iddata1Z1SYS = ssest(z1,2);

建立仿真选项设置,并指定初始状态。

选择= simOptions ('初始条件'[1; 2]);

指定初始状态的协方差。

opt.X0Covariance = [0.1 0;0 0.1);

模拟计算响应的标准偏差,y_sd,状态轨迹,x_sd

[Y,y_sd,X,x_sd] = SIM(SYS,Z1,优化);

获得已识别的模型。

负载iddata2Z2SYS = tfest(z2,3);

SYS是一个idtf模型封装估计所测量的数据三阶传递函数Z2

模拟模型。

sim (sys、z2)

模拟一个单输入单输出的非线性ARX模型周围已知的平衡点,随着输入电平1的输出电平10

加载样本数据。

负载iddata2

估计一个非线性ARX模型从数据。

M = nlarx(Z2,[2 2 1],“treepartition”);

估计基于过去的数据模型的当前状态。因为有在输入和输出变量(2此处)滞后指定许多过去的样本。

X0 = data2state(M,结构(“输入”,酮(2,1),“输出”,10个*也是(2,1)));

使用返回的初始状态模拟模型data2state

选择= simOptions ('初始条件',x0);SIM(M,Z2,优化)

从以前的模拟运行结束继续非线性ARX模型的模拟。

从数据估计一个非线性ARX模型。

负载iddata2M = nlarx(Z2,[2 2 1],“treepartition”);

使用输入数据的前半部分模拟模型Z2。从零开始初始状态的模拟。

u1 = z2 (1∶[]);opt1 = simOptions ('初始条件','零');YS1 = SIM(M,U1,OPT1);

使用输入数据下半年开始另一次模拟Z2。使用与第一次模拟结束时相同的模型状态。

U2 = Z2(201:结束时,[]);

正确地设置的初始状态的第二模拟,打包输入U1和输出ys1从第一模拟到一个IDDATA对象。将此数据作为下一次模拟的初始条件传递。

firstSimData = [YS1,U1];opt2 = simOptions ('初始条件',firstSimData);ys2 = sim (M, u2, opt2);

通过比较使用所有输入数据的完整模拟验证两种模拟Z2。首先,提取出完整的输入数据集。

u总= Z2(:,[]);OPT3 = simOptions('初始条件','零');ysTotal = SIM(M,u总,OPT3);

画出三个响应ys1,ys2ysTotal。ys1应该等于上半年ysTotalys2应等于第二半ysTotal

图(YS1,'B',YS2,'G',ysTotal,'K *')

该图显示,在三个响应ys1,ys2ysTotal重叠。

估计模型的初始状态使得,最好响应于数据组中的输出相匹配Z2

加载样本数据。

负载iddata2;

估计一个非线性ARX模型从数据。

M = nlarx(z2,[4 3 2],wavenet('单位的数量',20));

估计的初始状态以最合适的z2.y在模拟响应中。

x0 = findstates (M, z2,正);

模拟模型。

选择= simOptions ('初始条件',x0);ysim = sim (M, z2.u,选择);

比较模拟模型输出ysim与在输出信号中Z2

时间= z2.SamplingInstants;图(时间,ysim,时间,z2.y,“。”)

接近稳态的模型,其中输入被称为是开始模拟1,但输出未知。

加载样本数据。

负载iddata2

估计一个非线性ARX模型从数据。

M = nlarx(z2,[4 3 2],'wavenet');

确定用于输入平衡状态的值1和未知目标输出。

X0 = findop(M,'稳定',1,NAN);

使用初始状态模拟模型X0

选择= simOptions ('初始条件',x0);SIM(M,z2.u,优化)

加载样本数据。

负载iddata2

创建一个Hammerstein-Wiener模型。

M = nlhw(z2,[4 3 2],[],“pwlinear”);

计算对应于输入电平的稳态工作点的值1和未知的输出水平。

X0 = findop(M,'稳定',1,NAN);

使用估计的初始状态模拟模型。

选择= simOptions ('初始条件',x0);SIM(M,z2.u)

负载的时间序列数据,并采用最小二乘逼近估计的AR模型。

负载iddata9Z9SYS = AR(z9,6,'LS');

对于时间序列数据,指定所需的模拟长度,N= 200使用anN-乘0输入数据集。

数据= IDDATA([],零(200,0),z9.Ts);

设定初始条件,将时间序列的初始样本作为历史输出样本。

IC =结构(“输入”,[]“输出”z9.y (1:6));选择= simOptions ('初始条件',我知道了);

模拟模型。

sim (sys、数据选择)

在模拟模型时,使用历史输入输出数据作为初始条件的代理。首先模拟使用sim卡命令,并指定历史数据simOptions选项集。然后,通过历史数据手动映射到初始状态重现模拟输出。

加载一个两输入一输出的数据集。

负载iddata7Z7

识别使用所述数据的第五阶状态空间模型。

sys = n4sid (z7 5);

拆分数据集分成两个部分。

ZA = Z7(1:15);ZB型= Z7(16:端);

用输入信号模拟模型ZB型

USIM = ZB型;

模拟需要的初始条件。在信号值ZA是历史数据,即,它们是时,就立即在前面的数据的输入和输出值ZB型。使用ZA作为所需初始条件的代理。

IO =结构(“输入”,zA.InputData,“输出”,zA.OutputData);选择= simOptions ('初始条件',IO);

模拟模型。

ysim = SIM(SYS,USIM,优化);

现在通过手动映射历史数据的初始状态再现输出SYS。要做到这一点,使用data2state命令。

XF = data2state(SYS,ZA);

XF的状态值SYS在时间瞬间后,立即将最近的数据采样进来ZA

使用模拟系统XF作为初始状态。

opt2 = simOptions ('初始条件',XF);ysim2 = SIM(SYS,USIM,OPT2);

剧情的输出sim卡命令ysim和手动计算结果ysim2。

情节(ysim'B',ysim2,'--R')

ysim2是相同的ysim

输入参数

全部折叠

已识别模型,指定为下列模型对象之一:

型号类型 模型对象
识别线性模型 多项式模型 idpoly
流程模型 idproc
状态空间模型 中的难点
传递函数模型 idtf
线性灰盒模型 idgrey
确定的非线性模型 非线性ARX模型 idnlarx
非线性Hammerstein-Wiener模型 idnlhw
非线性灰箱模型 idnlgrey

仿真输入数据,指定为IDDATA物体或基质。sim卡从该对象作为模拟输入使用输入通道。对于离散时间系统的时域仿真,您还可以指定UDATA作为与对应于每个输入通道列的矩阵。

如果SYS是一个线性模型,则可以使用时域或频域数据。如果SYS是一个非线性模型,你只能使用时域数据。

如果SYS是一个时间序列模型,这是一个没有输入的模式,指定UDATA作为NS-by-0信号,其中NS是模拟输出采样的数量通缉。例如,为了模拟100输出样本,指定UDATA如下。

UDATA = IDDATA([],零(100,0)中,Ts);

如果你没有从实验中,使用有数据idinput产生各种特性的信号。

模拟选项,指定为simOptions选项设置用于设置以下选项:

  • 初始条件

  • 输入/输出偏移

  • 加性噪声

输出参数

全部折叠

对于仿真响应SYS,返回一个IDDATA物体或基质,具体取决于您指定UDATA。例如,如果UDATA是一个IDDATA对象,那么就是对象y

如果UDATA表示时域数据,则y为对应于时间矢量的模拟响应UDATA

如果UDATA代表了频域数据,U(ω), 然后y包含的傅里叶变换对应的采样的时域输出信号的。这个信号是的频率响应的积SYS,G(ω),U(ω)。

对于多实验数据,y是相应的多实验吗IDDATA对象。

对于线性模型或非线性灰盒模型的模拟响应的估计的标准偏差,返回一个NS-通过-尹恩惠矩阵,其中NS是样本的数目和尹恩惠是输出的数量。该软件通过考虑模型参数协方差,初始状态协方差,和附加噪声协方差计算的标准偏差。加性噪声协方差被存储在NoiseVariance模型的属性。

y_sd利用一阶灵敏度考虑(高斯近似公式)推导。

对于非线性模型,y_sd[]

对于状态空间模型估计的状态轨迹,返回一个NS-通过-NX矩阵,其中NS是样本的数目和NX是状态的数量。

x如果是只相关SYS是一个中的难点,idgrey, 要么idnlgrey模型。如果SYS是不是状态空间模型,x返回的是[]

对于状态空间模型状态轨迹的估计的标准偏差,返回一个NS-通过-NX矩阵,其中NS是样本的数目和NX是状态的数量。该软件通过考虑模型参数协方差,初始状态协方差,和附加噪声协方差计算的标准偏差。加性噪声协方差被存储在NoiseVariance模型的属性。

x_sd如果是只相关SYS是一个中的难点,idgrey, 要么idnlgrey模型。如果SYS是不是状态空间模型,x_sd返回的是[]

提示

  • 当所测量的验证数据集所估计的模型的初始条件和系统是不同的,模拟的和测量的响应也可以不同,特别是在反应的开始。为了尽量减少这种差异,使用估计的初始状态值findstates并使用估计值来设置初始条件使用选项simOptions。例如,请参阅匹配模型响应输出数据

算法

模拟指使用输入数据和初始条件计算模型响应。sim卡模拟如下系统:

这里,

  • u(t)是仿真输入数据,UDATA

  • y(t)为模拟输出响应。

  • G从输入到输出的传递函数是否被定义为SYS。模拟的初始条件,使用如指定simOptions,设置的初始状态G

  • e(t)是一个可选的噪声信号。通过创建一个噪音添加到您的模拟simOptions选项设置,并设置AddNoise选项真正。此外,可以通过指定参数来更改默认的噪声信号NoiseData选项。

  • H噪声传递函数和定义在SYS

  • ΔU是从输入信号中减去的可选输入偏移量,u(t),之前的输入被用来模拟模型。指定一个输入通过设置偏移InputOffset使用选项simOptions

  • ΔY被添加到输出响应的可选输出偏移,y(t),模拟之后。指定一个输出通过设置偏移OutputOffset使用选项simOptions

有关指定模拟的初始条件,输入和输出偏移和噪声信号数据的更多信息,请参见simOptions。对于multiexperiment数据,可以为每个实验分别指定这些选项。

选择

  • 使用simsd用于计算响应的标准偏差的蒙特卡罗法。

  • sim卡扩展lsim以促进相关标识型号的附加功能:

    • 非线性模型的仿真

    • 模拟与加性噪声

    • 信号偏移掺入

    • 响应的标准偏差的计算(线性模型只)

    • 频域仿真(线性模型只)

    • 模拟使用不同的采样间行为不同的输入

    为了获得没有任何前述的操作,使用模拟的响应lsim

R2006a前推出