sim卡
模拟识别模型的响应
语法
描述
sim卡(___)
绘制识别模型的模拟响应。
例子
使用输入数据模拟状态空间模型
为模拟模型响应添加噪声
加载数据,并获得识别的模型。
负载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);
创建一个模拟选项集,并指定初始状态。
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);
模拟模型响应
模拟非线性ARX模型
在已知平衡点附近模拟单输入单输出非线性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,选择)
从上次模拟结束继续
继续上一次模拟运行结束时的非线性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
应该等于前一半ysTotal
.ys2
应该等于的后半部分ysTotal
.
情节(ys1“b”ys2,‘g’ysTotal,“k *’)
图中显示了三种反应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“。”)
已知输入和未知输出的稳态模拟模型
开始模拟接近稳态的模型,其中输入是已知的1
,但输出未知。
加载样例数据。
负载iddata2
从数据估计一个非线性ARX模型。
M = nlarx(z2,[4 3 2],idWaveletNetwork);
确定输入的平衡状态值1
和未知的目标输出。
x0 = findop(M,“稳定”1、南);
使用初始状态模拟模型x0
.
opt = simOptions(“InitialCondition”, x0);sim (M, z2.u,选择)
稳态工作点Hammerstein-Wiener模型模拟
加载样例数据。
负载iddata2
创建一个Hammerstein-Wiener模型。
M = nlhw(z2,[4 3 2],[], idpiecewislinear);
计算与输入电平相对应的稳态工作点值1
一个未知的输出水平。
x0 = findop(M,“稳定”1、南);
用估计的初始状态模拟模型。
opt = simOptions(“InitialCondition”, x0);sim (M, z2.u)
模拟时间序列模型
加载时间序列数据,并使用最小二乘方法估计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、数据选择)
理解使用历史数据进行模型模拟
在模拟模型时,使用历史输入-输出数据作为初始条件的代理。方法进行模拟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
以及人工计算的结果ysim
2.
情节(ysim“b”ysim2,“——r”)
ysim2
和ysim
.
模拟连续时间神经状态空间对象
的状态和输出网络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 (“输出”);包含(“时间(秒)”)标题(神经状态空间系统:模拟输出)
输入参数
udata
- - - - - -仿真输入数据
时间表
|数字矩阵|iddata
对象
模拟输入数据,指定为时间表
,一个数字矩阵,或iddata
对象。的规范udata
取决于数据类型。
时间表-指明
udata
作为一个Ns——- - - - - -ν时间表,Ns
每个变量中的数据样本数量和ν是输入的数量。udata
必须具有与模型的原始数据相同的变量名sys
据估计。数字矩阵-指定
udata
作为一个Ns——- - - - - -ν矩阵。该软件使用采样周期在Ts
的属性sys
.不支持数值矩阵输入数据idNeuralStateSpace
对象。
如果sys
是线性模型,可以使用时域或频域数据。如果sys
是非线性模型,必须使用时域数据。
如果sys
时间序列模型,即没有输入的模型,是指定的吗udata
作为一个Ns-by-0信号,其中Ns是模拟输出样本的期望数量。例如,模拟One hundred.
输出示例,指定udata
如下。
data = iddata([], 0 (100,0),Ts);
如果你没有实验数据,请使用idinput
产生具有各种特性的信号。
有关使用估计数据类型的详细信息,请参见系统标识工具箱中的数据类型.
选择
- - - - - -模拟选项
simOptions
选项设置
模拟选项,指定为simOptions
设置以下选项的选项集:
初始条件
输入/输出补偿
添加剂噪声
输出参数
y_sd
-估计标准偏差
双矩阵
线性模型或非线性灰盒模型模拟响应的估计标准偏差,返回为Ns——- - - - - -纽约矩阵,Ns是样品的数量和纽约是输出的数量。该软件通过考虑模型参数协方差、初始状态协方差和附加噪声协方差计算标准偏差。加性噪声协方差存储在NoiseVariance
模型的属性。
y_sd
使用一阶灵敏度考虑因素(高斯近似公式)导出。
对于非线性模型,y_sd
是[]
.
x
-状态空间模型的估计状态轨迹
矩阵|[]
状态空间模型的估计状态轨迹,返回为Ns——- - - - - -Nx矩阵,Ns是样品的数量和Nx是状态数。
x
只有当sys
是一个中的难点
,idgrey
,或idnlgrey
模型。如果sys
不是状态空间模型,x
返回为[]
.
x_sd
-状态轨迹估计标准差
矩阵|[]
状态空间模型状态轨迹的估计标准差,返回为Ns——- - - - - -Nx矩阵,Ns是样品的数量和Nx是状态数。该软件通过考虑模型参数协方差、初始状态协方差和附加噪声协方差计算标准偏差。加性噪声协方差存储在NoiseVariance
模型的属性。
x_sd
只有当sys
是一个中的难点
,idgrey
,或idnlgrey
模型。如果sys
不是状态空间模型,x_sd
返回为[]
.
提示
当估计模型和测量验证数据集的系统的初始条件不同时,模拟和测量的响应也可能不同,特别是在响应的开始阶段。要最小化此差异,请使用
findstates
并使用估计值来设置InitialCondition
选择使用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
.对于多实验数据,您可以为每个实验分别指定这些选项。
选择
版本历史
R2006a之前介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。