概述
部输入ut1、ut2…。
(5) t:返回系统仿真时间向量。
(6) x:返回系统仿真状态变量矩阵。首先是连续状态,然后是离散状态。
(7) y:返回系统仿真的输出矩阵。按照顶层输出Outport模块的顺序输出,如果输出信号为向量输出,则输出信号具有与此向量相同的维数。
(8) y1, ... ,yn:返回多个系统仿真的输出。 3. 功能描述
对指定的系统模型按照给定的仿真参数与模型参数进行系统仿真。仿真所使用的参数包括所有使用仿真参数对话框的设置、MATLAB工作空间的输入输出选项卡中的设置以及采用命令行方式设置的仿真参数与系统模块参数。
除参数'model'外,其它的仿真参数设置均可以取值为空矩阵,此时sim命令对没有设置的仿真参数使用默认的参数值进行仿真。默认的参数值由系统模型框图所决定。用户可以使用sim命令的options参数对可选参数进行设置,这样设置的仿真参数将覆盖模型默认的参数。
如果用户对连续系统进行仿真,必须设置合适的仿真求解器,因为默认的仿真求解器为变步长离散求解器(Variable Step Discrete Solver)。可以使用simset命令进行设置。
例子:
然后在MATLAB工作空间中定义输入变量sim_input如下: >> t=0:0.1:10; % 表示输入信号的时间范围 >> u=sin(t); % 产生输入正弦信号
>> sim_input=[t',u']; % 传递至Simulink系统模型的变量 ‘表示转置
接下来,采用默认的系统仿真参数并运行系统仿真。最后使用MATLAB命令绘制出原始输入信号与系统运算结果,如下所示:
>> plot(t,u,tout,yout,?--‘)%绘制系统输入信号与仿真结果,如图8.3所示. 注意: subplot(2,2,1) %设置在一个figure中显示2*2个图,当前显示第一个 plot(t,u,tout1,yout1,'.');%绘制当前的图像
2.仿真时间设置
在前面已经对sim命令中的仿真时间参数timespan设置做了介绍。timespan具有三种使用形式,根据不同动态系统仿真的不同要求,用户可以选择使用如下所示的不同形式进行系统仿真:
>>[t,x,y]=sim(model,tFinal)
>>[t,x,y]=sim(model,[tStart tFinal])
>>[t,x,y]=sim(model,[tStart outputTimes tFinal])
[tout1, x1, yout1]=sim('文件名',5); % 系统仿真时间范围为0至5 s,输出时间向量tout1由Simulink的求解器步长变化决定
>> [tout2, x2, yout2]=sim('文件名',[1 8]); % 系统仿真时间范围为1至8 s,输出时间向量tout1同样由Simulink的求解器步长变化决定
>> [tout3, x3, yout3]=sim('文件名',1:8);% 系统仿真时间范围为1至8 s,并且每隔1 s输出一次,即输出时间变量为% [1 2 3 4 5 6 7 8]
>> [tout4, x4, yout4]=sim('command_in_out',1:0.2:8);% 系统仿真时间范围为1至8 s,并且每隔0.2 s输出一次
3.外部输入变量设置
前面对动态系统command_in_out进行仿真时,通过设置Simulink仿真参数设置对话框中Workspace I/O中的外部变量输入,以使系统在仿真过程中从MATLAB的工作空间中获取输入信号sim_input。除了使用这种方法从MATLAB工作空间中获得系统输入信号之外,用户还可以通过使用sim命令中的ut参数来设置系统的外部输入信号。下面介绍如何使用ut参数设置外部输入信号。
1. ut参数的生成
用户可以使用命令[t,x,y]=sim(model,timespan, options,ut) 对动态系统进行仿真并且从MATLAB工作空间中输入变量。其中ut为一个具有两列的矩阵,第一列表示外部输入信号的时刻,第二列表示与给定时刻相应的信号取值。使用矩阵ut能够为系统模型最顶层的Inport模块提供外部输入,并将自动覆盖Simulink仿真参数设置对话框中Workspace I/O中的设置。
此外,当输入信号中存在着陡沿边缘时,必须在同一时刻处定义不同的信号取值。例如,对于图8.7所示的一个类似于方波的信号。
产生此输入信号的MATLAB命令为
>>ut=[0 1;10 1;10 -1;20 -1;20 1;30 1;30 -1;40 -1;40 1;50 1]
2. 应用举例
仍以动态系统command_in_out为例说明如何使用sim命令的参数ut从MATLAB工作空间中获得输入信号。在MATLAB命令窗口中键入如下的命令: >> t=0:0.1:10; >> u=sin(t);
>>sim_input=[t',u'];
>> [tout1, x1, yout1]=sim('command_in_out',10);% 使用Simulink仿真参数对话框中的Workspace I/O从MATLAB工作空间中获得输入信号 >>u=cos(t);
>>ut=[t',u'];% 改变系统输入信号
>>[tout2,x2,yout2]=sim('command_in_out',10,[],ut);% 使用sim命令的ut参数获得系统输入信号,ut的使用会覆盖由Workspace I/O的系统输入设置, % 这一点可以在下面的系统仿真结果图形中反映出来 >>subplot(1,2,1); plot(tout1,yout1); >>subplot(1,2,2);plot(tout2,yout2);
%绘制系统在不同输入信号下的响应曲线,如图8.8所示
4.模块参数设置
虽然Simulink提供了多种系统输入信号,但并不能完全满足需要。Simulink允许使用用户自定义的信号作为系统输入信号。在Load form workspace框中,用户可以设置Matlab中的变量作为系统输入信号或是系统状态初始值,如下所述:
(1)Input:用来设置系统输入信号。其格式为[t,u],其中t、u均为列向量,t为输入信号的时间向量,u为相应时刻的信号取值,可以使用多个信号输入,如[t,u1,u2]。输入信号与Simulink的接口由Inport模块(In1模块)实现。
(2)xInitialstate:用来设置系统状态变量初始值。初始值xInitial可为行向量。
注意,使用xInitialstate所设置状态变量初始值会自动覆盖系统模块中的设置。另外,输入信号与状态变量需要按照系统模型中Inport模块(即In1模块)的顺序进行正确设置。
2.数据保存设置(Save option)
(1)Limit data points to last:表示输出数据的长度(从信号的最后数据点记起)。 (2)Format:表示输出数据类型。共有三种形式:Structure with Time(带有仿真时间变量的结构体)、Structure(不带仿真时间变量的结构体)以及Array(信号数组)。
一般型:
? 第一列表示时间
? 接下来的各列表示信号的值
? Simulink 使用线性插值得到中间点的数据 时间函数:
>> t=0:time_step:final_time; u=func(t); >> sim_data=[t‘,u‘]; 分段线性:
>> t=0:10; u=[0 1 0 1 0 1 0 1 0 1 0]; >> sim_data=[t‘,u‘]; 陡沿:
同一时间点定义两次,每次的信号值不同。 t=[0 1 1 2 3 3 4 5]; >> u=[0 1 0 1 1 0 1 0]; >> sim_data=[t',u'];
>> plot(sim_data(:,1),sim_data(:,2))
最后
以上就是激动帅哥为你收集整理的matlab outputtimes,Matlab中Stateflow应用的全部内容,希望文章能够帮你解决matlab outputtimes,Matlab中Stateflow应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复