matlab怎么读取simulink中的时序数据?

在《MATLAB如何利用.m文件实现对simulink系统的动态仿真?(1)》(https://mp.csdn.net/editor/html/115607641)一文中我们写了一句注意事项是:“在该仿真中要将To Workspace模块Save format选项设置为Array,否则会报错。”但是我们倘若不修改To Workspace模块Save format选项,那么它传输到Workspace中的就是时序数据,如何才能使程序不报错呢?也就是说matlab怎么读取simulink中的时序数据?

一、基本方法

首先创建一个时序对象

ts = timeseries(datavals)    %创建一个时序对象

然后读取其中的数据

tsdata = getdatasamples(ts, ind)       %返回对应于 ind 中索引的 timeseries 对象 ts 的数据。

二、实例应用

1.数学公式回顾

根据数学公式搭建simulink文件

matlab怎么读取simulink中的时序数据?_第1张图片

其中to workplace模块(即:h)均采用默认值,这样它传输到workplace中为时序模块

matlab怎么读取simulink中的时序数据?_第2张图片

编写.m文件

clc
clear all
%%%g=10时高度与时间的关系
g=10
[t1,x1,y1]=sim('new',10)       %运行simulink文件

figure
subplot(2,1,1)
plot(h)                           %plot可直接绘制时序图

ts = timeseries(h)                %创建时序对像

ty=getdatasamples(ts,(1:51)')   

y=(1:51);
%y=
for i=1:51
y(i)=ty(:,:,i);
end                             %将1*1*51的ty变成1*51的y

subplot(2,1,2)
plot(t1,y)

运行结果如下:

matlab怎么读取simulink中的时序数据?_第3张图片

通过运行结果,第一张图为直接绘制时序图,第二张图为读取时序数据后绘制的图形,两图形一摸一样,我们的程序正确,时序文件读取成功。下面我们对.m文件进行讲解。

1.plot()命令可以直接绘制时序图。

在《MATLAB如何利用.m文件实现对simulink系统的动态仿真?(1)》(https://mp.csdn.net/editor/html/115607641)一文中将需要将To Workspace模块Save format选项设置为Array,否则程序报错原因是我们的绘图命令为:plot(t1,y1)

如果我们直接写plot(h)   就不会报错,也就不涉及使用.m文件读取时序数据的问题了,但是有的时候我们不仅仅需要绘图,我们就是需要读取时序数据进行处理。

2.ty=getdatasamples(ts,(1:51)') 得到的是一个1*1*51的数组,需要把它转化为1*51的数组,否则程序会报错,因为plot绘图命令数据维度不能超过二维。

matlab怎么读取simulink中的时序数据?_第4张图片

 

你可能感兴趣的:(simulink,matlab,simulink)