MATLAB是一款强大的数学计算软件,Simulink则是一种基于模型的多域仿真平台,常用于工程和科学领域中的系统设计、控制设计和信号处理等方面。MATLAB和Simulink都是MathWorks公司的产品,因此二者之间可以实现数据交互,具有以下几个重要的原因:
1、Simulink的数据输出
Simulink输出数据主要有两种方法,一种是利用to workspace模块直接将数据输出到MATLAB的工作区间中,可以直接编写MATLAB程序使用数据,这种方法简单,但是在关闭MATLAB后数据也回丢失。为了永久保存数据,需要使用Simulink中的to file模块,将数据以.mat文件的形式保存。
1.1、to workspace模块
以下是其详细参数介绍:
可以设置变量名称、数据点限制、数据的抽取间隔,还可以选择数据类型,支持timeseries、array或者结构体数据。下面介绍一个简单的例子,将正弦函数输出到MATLAB的工作空间:
程序运行完成之后才会在工作空间创建变量:
默认是timeseries类型的数据,该数据有两个维度:时间和数值维度。
1.2、to file模块
主要的参数有文件名称、变量名称、数据类型、抽取间隔和采样时间,下边介绍一个简单的例子,同样是把正弦信号输出:
会在当前文件夹生成一个mat文件
用load(‘data.mat’)命令将数据导入:
2、Simulink读取数据
Simulink读取MATLAB数据得主要方法也有两种,from workspace和from file。接下来介绍这两种模块得具体用法。
2.1、from workspace
此时变量区还没simin变量,所以还是个红色提示状态。
该模块导入数据的方式有三种:timeseries, matrix, structure,下边是其主要参数介绍
Data:用于设置变量名为 simin
Output data type:用于设置输出数据类型
Interpolate date:用于使能内部插值
Enable zero-crossing detection:用于使能过零检测
Form output after final data value by:用于选择当仿真时间超过外部数据时,接下来的时间进行外部插值的算法
来介绍数据导入得例子:
(1) 以矩阵得形式导入
首先先建立一个矩阵:
t=[0:0.01:10]';
x=sin(t);
simin=[t,x];
需要注意得是:simin矩阵至少有两列,一列为时间数据,一列为数值。
仿真模型和结果:
(2) 结构体数据:
MATLAB代码:
t=[0:0.01:10]';
x=sin(t);
simin.time=t; %赋值结构体时间序列
simin.signals.values=x; %赋值结构体参数
simin.signals.dimension=[1001,2]; %赋值结构体参数大小(行数,列数)
(3) timeseries数据
MATLAB代码:
t=[0:0.01:10]';
x=sin(t);
simin=timeseries; %定义数据类型
simin.Time=t; %时间域赋值
simin.Data=x; %数据域赋值
2.2、from file模块读取数据
该模块主要参数有文件名称,输出数据类型,采样时间,插值以及过零检测等,下面以一个简单的例子介绍该模块的用法。
还是用MATLAB编程保存.mat文件
t=[0:0.01:10]';
x=sin(t);
y=[t,x];
sinx = timeseries(y(:,2:end),y(:,1));
save data.mat sinx
调用模块:
仿真结果: