主要内容

sim卡

模拟识别模型的响应

描述

例子

y= sim卡(sysudata)返回使用输入数据的已识别模型的模拟响应,udataudata可以是一个时间表,一个数字矩阵,或iddata对象。默认情况下,所有模型类型都使用零初始条件idnlgrey,在这种情况下,使用存储在模型内部的初始条件。

例子

y= sim卡(sysudata选择)使用选项集,选择,以配置模拟选项,包括初始条件的规定。

例子

yy_sd) = sim卡(___)返回估计的标准差,y_sd的模拟响应。

例子

yy_sdx) = sim卡(___)返回状态轨迹,x,用于状态空间模型。

例子

yy_sdxx_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 (“InitialState”“估计”);

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

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

指定模拟的初始条件

simOpt = simOptions (“InitialCondition”, x0);

对模型进行仿真,得到模型响应和标准差。

[y, y_sd] = sim (sys, z1, simOpt);

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

负载iddata1z1sys = ss (z1, 2);

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

[y y_sd x] = sim (sys, z1);

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

负载iddata1z1sys = ss (z1, 2);

创建一个模拟选项集,并指定初始状态。

选择= simOptions (“InitialCondition”[1, 2]);

指定初始状态的协方差。

opt. x0co方差= [0.1 0;0 0.1);

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

[x, y, y_sd x_sd] = sim (sys, z1,选择);

获取已识别的模型。

负载iddata2z2sys =特遣部队(z2, 3);

sys是一个idtf封装了为测量数据估计的三阶传递函数的模型z2

模拟模型。

sim (sys、z2)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。该节点表示sys。

模拟一个单输入单输出非线性ARX模型,在已知的平衡点附近,输入水平为1和输出水平10

加载样例数据。

负载iddata2

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

M = nlarx(z2,[2 2 1],“idTreePartition”);

根据过去的数据估计模型的当前状态。指定输入和输出变量中有延迟的过去样本的数量(这里是2)。

x0 = data2state (M,结构(“输入”的(1),“输出”10 * 1 (2, 1)));

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

选择= simOptions (“InitialCondition”, x0);sim (M, z2,选择)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。这个对象表示M。

从前面的模拟运行结束开始继续对非线性ARX模型的模拟。

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

负载iddata2M = nlarx(z2,[2 2 1],idTreePartition);

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

u1 = z2(1∶[]);opt1 = simOptions (“InitialCondition”“零”);ys1 = sim (M, u1, opt1);

使用输入数据的后半部分启动另一个模拟z2.使用第一次模拟结束时的模型的相同状态。

u2 = z2(201:最终,[]);

要正确设置第二次模拟的初始状态,请打包输入u1和输出ys1从第一个模拟变成了一个iddata对象。将此数据作为下一个模拟的初始条件传递。

firstSimData = (ys1, u1);opt2 = simOptions (“InitialCondition”, firstSimData);ys2 = sim (M, u2, opt2);

通过与使用所有输入数据的完整模拟进行比较,验证两个模拟z2.首先,提取整个输入数据集。

uTotal = z2 (:, []);opt3 = simOptions (“InitialCondition”“零”);ysTotal = sim (M, uTotal, opt3);

画出三种反应ys1ys2而且ysTotal。ys1应该等于的前半部分ysTotalys2应该等于的后半部分ysTotal

情节(ys1“b”ys2,‘g’ysTotal,“k *’)

图中包含一个axes对象。标题为y1的axes对象包含3个类型为line的对象。这些物体代表M。

图中显示了三种反应ys1ys2,ysTotal重叠。

估计模型的初始状态使响应与数据集中的输出最匹配z2

加载样例数据。

负载iddata2

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

M = nlarx(z2,[4 3 2],idWaveletNetwork(“NumberOfUnits”, 20));

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

x0 = findstates (M, z2,正);

模拟模型。

选择= simOptions (“InitialCondition”, x0);ysim = sim (M, z2.u,选择);

比较仿真模型输出结果ysim输出信号在z2

时间= z2.SamplingInstants;情节(时间、ysim时间、z2.y“。”)

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。

开始模拟一个接近稳态的模型,在那里输入是已知的1,但输出是未知的。

加载样例数据。

负载iddata2

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

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

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

x0 = findop (M,“稳定”1、南);

使用初始状态模拟模型x0

选择= simOptions (“InitialCondition”, x0);sim (M, z2.u,选择)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。这个对象表示M。

加载样例数据。

负载iddata2

创建一个Hammerstein-Wiener模型。

M = nlhw(z2,[4 3 2],[], idpiecewislinear);

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

x0 = findop (M,“稳定”1、南);

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

选择= simOptions (“InitialCondition”, x0);sim (M, z2.u)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。这个对象表示M。

加载时间序列数据,并使用最小二乘方法估计AR模型。

负载iddata9z9sys = ar (z9 6“ls”);

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

data = iddata ([], 0 (200 0), z9.Ts);

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

IC =结构(“输入”[],“输出”z9.y (1:6));选择= simOptions (“InitialCondition”、集成电路);

模拟模型。

sim (sys、数据选择)

图中包含一个axes对象。标题为y1的axes对象包含一个类型为line的对象。该节点表示sys。

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

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

负载iddata7z7

使用这些数据确定一个五阶状态空间模型。

sys = n4sid (z7 5);

将数据集分成两部分。

咱= z7 (1:15);zB = z7(16:结束);

用输入信号对模型进行仿真zB

uSim = zB;

模拟需要初始条件。的信号值历史数据,也就是说,它们是紧接数据之前的时间的输入和输出值吗zB.使用作为所需初始条件的代理。

IO =结构(“输入”,咱。InputData,“输出”, zA.OutputData);选择= simOptions (“InitialCondition”IO);

模拟模型。

ysim = sim (sys、uSim选择);

的初始状态手动映射历史数据,从而重新生成输出sys.要做到这一点,请使用data2state命令。

xf = data2state (sys,咱);

xf的状态值sys在时间瞬间后立即将最近的数据抽样了进去

使用以下命令模拟系统xf作为初始状态。

opt2 = simOptions (“InitialCondition”、xf);ysim2 = sim (sys、uSim opt2);

的输出sim卡命令ysim以及手工计算的结果ysim2.

情节(ysim“b”ysim2,“——r”)

图中包含一个axes对象。标题为y1的axes对象包含两个类型为line的对象。这些对象表示sys。

ysim2ysim

的状态和输出网络idNeuralStateSpace对象被随机初始化。为了保证再现性,固定随机数生成器的种子。

rng (0)

创建一个具有两个状态、两个输入和三个输出的连续时间神经状态空间对象。

nss = idNeuralStateSpace (2, NumInputs = 2, NumOutputs = 3)
3输出2状态2输入的连续时间神经状态-空间模型dx/dt = f(x(t),u(t)) y_1(t) = x(t) + e_1(t) y_2(t) = g(x(t),u(t)) + e_2(t) y(t) = [y_1(t);y_2(t)] f(.)网络:有2个全连接的隐藏层的深层网络激活函数:Tanh g(.)网络:有2个全连接的隐藏层的深层网络激活函数:Tanh输入:u1, u2输出:y1, y2, y3状态:x1, x2状态:通过直接构建或转换创建。不估计。更多信息见模型的“Report”属性。模型属性

定义一个时间序列、一个随机输入信号和一个随机初始状态。

t =(0:1:10)”;u =兰德(长度(t), 2);x0 = 0.3 * randn (2, 1);

当模拟idNeuralStateSpace系统中,不支持将输入数据指定为数值数组。万博1manbetx对于本例,将输入数据转换为时间表对象,指定u的值与向量中的时间点相关联t

u = array2timetable (u, RowTimes =秒(t));

设置一个模拟选项对象,以便模拟从x0输出是根据矢量中的时间点计算的t

simOpt = simOptions (“InitialCondition”x0,“OutputTimes”t);

模拟(未经训练的)神经状态空间系统nss

y = sim (nss u simOpt);

绘制模拟输出图。

情节(t, y.Variables);ylabel (“输出”);包含(“时间(秒)”)标题(神经状态空间系统:模拟输出)

图中包含一个axes对象。神经状态空间系统:模拟输出包含3个类型为line的对象。

输入参数

全部折叠

已标识的模型,指定为以下模型对象之一:

模型类型 模型对象
确定线性模型 多项式模型 idpoly
流程模型 idproc
状态空间模型 中的难点
传递函数模型 idtf
线性灰色矩形模型 idgrey
确定的非线性模型 非线性ARX模型 idnlarx
非线性Hammerstein-Wiener模型 idnlhw
非线性灰色矩形模型 idnlgrey
神经状态 idNeuralStateSpace

模拟输入数据,指定为时间表,一个数字矩阵,或iddata对象。的规范udata取决于数据类型。

  • 时间表,指定udata作为一个Ns——- - - - - -ν时间表,Ns每个变量中的数据样本数和ν是输入的数量。udata必须具有与模型所来自的原始数据相同的变量名sys据估计。

  • 数字矩阵-指定udata作为一个Ns——- - - - - -ν矩阵。该软件使用样本周期Ts的属性sys.的数字矩阵输入数据不支持万博1manbetxidNeuralStateSpace对象。

  • iddata对象——指定udata作为一个iddata对象,该对象包含时域或频域数据。

如果sys是一个线性模型,您可以使用时域或频域数据。如果sys是非线性模型,必须使用时域数据。

如果sys一个时间序列模型,即一个没有输入的模型,是指定的吗udata作为一个Ns由0信号,Ns是模拟输出样本的所需数量。例如,模拟One hundred.输出样本,指定udata如下。

udata = iddata ([], 0 (100 0), Ts);

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

有关使用估计数据类型的更多信息,请参见“系统标识工具箱”中的数据类型

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

  • 初始条件

  • 输入/输出补偿

  • 添加剂噪声

输出参数

全部折叠

模拟响应sys,作为iddata对象或矩阵,取决于您如何指定udata.例如,如果udata是一个iddata对象,则如此y

如果udata表示时域数据y时间矢量的模拟响应对应于udata

如果udata代表了频域数据,Uω),然后y包含相应采样时域输出信号的傅里叶变换。这个信号是频率响应的乘积sysGω),Uω).

对于multi-experiment数据,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并使用估计值来设置InitialCondition选择使用simOptions.示例请参见匹配模型响应与输出数据

算法

模拟指利用输入数据和初始条件计算模型响应的方法。sim卡模拟以下系统:

在这里,

  • ut)为模拟输入数据,udata

  • yt)为模拟输出响应。

  • G从输入到输出的传递函数定义在sys.模拟初始条件,按规定使用simOptions的初始状态G

  • et)是一个可选的噪声信号。为您的模拟添加噪声simOptions选项设置,并设置AddNoise选项真正的.此外,您可以通过指定NoiseData选择。

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

  • δu是从输入信号中减去一个可选的输入偏移量,ut),然后用输入来模拟模型。参数指定输入偏移量InputOffset选择使用simOptions

  • δy是添加到输出响应的可选输出偏移量,yt),后仿真。参数指定输出偏移量OutputOffset选择使用simOptions

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

选择

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

  • sim卡扩展lsim为方便与已确定型号相关的其他功能:

    • 非线性模型的仿真

    • 加性噪声的仿真

    • 信号偏移量的合并

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

    • 频域模拟(仅限线性模型)

    • 对不同的输入使用不同的样本间行为进行模拟

    若要在不进行任何上述操作的情况下获得模拟响应,请使用lsim

版本历史

之前介绍过的R2006a