主要内容

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 (“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.X0Covariance = [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)

Figure Estimated using TFEST包含一个轴对象。标题为“模拟输出#1:y1”的axis对象包含一个类型为line的对象。这个对象表示y1。

在已知的平衡点附近模拟一个单输入单输出的非线性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,选择)

Figure使用NLARX估算,预测焦点包含一个轴对象。标题为“模拟输出#1:y1”的axis对象包含一个类型为line的对象。这个对象表示y1。

在前一次仿真运行结束后,继续对非线性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);

绘制三个回应ys1,ys2ysTotal。ys1应该等于ysTotalys2应该等于的后半部分ysTotal

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

图中包含一个轴对象。标题为y1的axes对象包含3个类型为line的对象。这些对象代表ys1, ys2, ysTotal。

图中显示了三种反应ys1,ys2,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“。”

图中包含一个轴对象。轴对象包含两个类型为line的对象。

开始对输入已知的稳态附近的模型进行模拟1,但输出未知。

加载示例数据。

负载iddata2

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

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

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

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

使用初始状态模拟模型x0

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

Figure使用NLARX估算,预测焦点包含一个轴对象。标题为“模拟输出#1:y1”的axis对象包含一个类型为line的对象。这个对象表示y1。

加载示例数据。

负载iddata2

创建Hammerstein-Wiener模型。

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

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

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

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

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

使用NLHW估计包含一个轴对象。标题为“模拟输出#1:y1”的axis对象包含一个类型为line的对象。这个对象表示y1。

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

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

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

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

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

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

模拟模型。

sim (sys、数据选择)

图使用AR估计包含一个轴对象。标题为“模拟输出#1:y1”的axis对象包含一个类型为line的对象。这个对象表示y1。

在模拟模型时,使用历史输入输出数据作为初始条件的代理。首先模拟使用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”

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

ysim2是一样的ysim

输入参数

全部折叠

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

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

仿真输入数据,指定为iddata物体或矩阵。sim卡使用来自此对象的输入通道作为模拟输入。对于离散时间系统的时域模拟,您也可以指定udata作为一个矩阵,其列对应于每个输入通道。

如果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包含相应采样时域输出信号的傅里叶变换。这个信号是的频率响应的乘积sys,Gω),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