主要内容

sim卡

模拟识别模型的响应

描述

例子

y= sim卡(sys,udata使用输入数据返回已识别模型的模拟响应,udataudata可以是时间表,一个数字矩阵,或iddata对象。默认情况下,所有模型类型都使用零初始条件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 = sest(z2,3);

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

Y = sim(sys,z2);

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

负载iddata2z2Sys = n4sid(z2,3);

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

创建一个模拟选项集,向模拟模型响应中添加噪声。

opt1 = simOptions(“AddNoise”,真正的);

模拟模型。

Y = sim(sys,z2,opt1);

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

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

E = randn(length(z2.u),1);opt2 = simOptions(“AddNoise”,真的,“NoiseData”, e);

模拟模型。

Y = sim(sys,z2,opt2);

加载数据。

负载iddata1z1

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

estimOpt = ssestOptions(“InitialState”,“估计”);

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

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

指定模拟的初始条件

simOpt = simOptions(“InitialCondition”, x0);

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

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

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

负载iddata1z1Sys = sest(z1,2);

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

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

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

负载iddata1z1Sys = sest(z1,2);

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

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

指定初始状态的协方差。

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

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

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

获取已识别的模型。

负载iddata2z2Sys = tfest(z2,3);

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

模拟模型。

sim (sys、z2)

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

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

加载样例数据。

负载iddata2

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

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

根据过去的数据估计模型的当前状态。指定尽可能多的过去样本,因为输入和输出变量中有滞后(这里是2)。

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

通过返回的初始状态来模拟模型data2state

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

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

继续上一次模拟运行结束时的非线性ARX模型的模拟。

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

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

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

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

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

U2 = z2(201:end,[]);

要正确设置第二个模拟的初始状态,请打包输入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,ys2而且ysTotal。ys1应该等于前一半ysTotalys2应该等于的后半部分ysTotal

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

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

图中显示了三种反应ys1,ys2,ysTotal如预期的重叠。

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

加载样例数据。

负载iddata2

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

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

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

x0 = findstates(M,z2,Inf);

模拟模型。

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

比较模拟模型的输出ysim输入输出信号z2

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

图中包含一个轴对象。axis对象包含2个line类型的对象。

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

加载样例数据。

负载iddata2

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

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

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

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

使用初始状态模拟模型x0

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

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

加载样例数据。

负载iddata2

创建一个Hammerstein-Wiener模型。

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

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

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

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

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

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

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

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

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

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

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

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

模拟模型。

sim (sys、数据选择)

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

在模拟模型时,使用历史输入-输出数据作为初始条件的代理。方法进行模拟sim卡命令,并使用simOptions选项设置。然后,通过手动将历史数据映射到初始状态,重新生成模拟输出。

加载一个双输入一输出数据集。

负载iddata7z7

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

Sys = n4sid(z7,5);

将数据集分成两部分。

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

用输入信号模拟模型zB

uSim = zB;

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

IO = struct(“输入”,咱。InputData,“输出”, zA.OutputData);opt = simOptions(“InitialCondition”IO);

模拟模型。

ysim = sim(sys,uSim,opt);

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

xf = data2state(sys,zA);

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

使用xf作为初始状态。

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

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

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

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

ysim2ysim

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

rng (0)

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

nss = idNeuralStateSpace(2,NumInputs=2,NumOutputs=3)
三输出,两状态,两输入的连续时间神经状态空间模型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状态:通过直接构建或转换创建。不估计。更多信息在模型的“报告”属性。模型属性

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

T = (0:1:10)';U = rand(长度(t),2);X0 = 0.3*randn(2,1);

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

u = array2schedule (u,RowTimes=seconds(t));

设置仿真选项对象,使仿真从x0输出是根据向量中的时间点计算的t

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

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

y = sim(nss,u,simOpt);

绘制模拟输出。

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

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

输入参数

全部折叠

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

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

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

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

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

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

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

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

data = iddata([], 0 (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并使用估计值来设置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之前介绍

Baidu
map