matlab——simulink从工作空间导入数据作为输入信号进行仿真

时间:2024-02-24 15:25:02

2018版matlab——simulink从工作空间导入数据作为输入信号进行仿真

本次在simulink仿真的时候,我得到了一组一维数据(即一维矩阵theta2),这个一维数据中存的是按照时间顺序记录的50个角度值并存在工作空间中;而我仿真的时候需要将这50个角度值同样以时间顺序作为输入信号依次输入simulink,用来模拟关节转动过程。
因而,我涉及到“如何从工作空间导入数据至simulink”,并且“导入的数据能够作为输入信号直接用于仿真”。今天便分享一下我的处理办法;如果各位大佬有更好的方法,麻烦大佬给个玫瑰…

1、如何从matlab工作空间导入

simulink从工作空间导入数据常用方式有以下两种:
== 1)、在simulink配置中更改输入输出 ==

在这里插入图片描述
在这里插入图片描述

具体可参考:

https://wenku.baidu.com/view/f566d12eed630b1c59eeb594.html

== 本次主要讲下第二种方法 —— 2)、在simulink模块库中选择FromWorkspace模块 导入==

①进入simulink模块库
在这里插入图片描述
②在simulink —> Source 下选择FromWorkspace模块
FromWorkspace模块是simulink专门提供的一个能够从工作空间获得数据的模块。
在这里插入图片描述
③双击模块,编辑其属性。主要输入需要从工作空间导入的数据:
在这里插入图片描述
如图,我现在需要从工作空间输入的数据为“theta”,则我们将其输入至模块的Data栏中即可。这样simulink在仿真时就能够从工作空间获得数据。

2、FromWorkspace导入的数据应该具有的格式

FromWorkspace模块导入的数据并不是任意输入的,它具有一定的格式;数据必须按照这个格式才能正确的被使用。

格式如下:
data[时间戳,需要作为信号导入的数据1]

在这里插入图片描述

== 这里讲下如何将我们的数据(如我的存有50个角度数据的theta2)产生一个可直接供FromWorkspace模块使用的参数theta ==
%%%% %%%% %%%% 生成具有对应时间戳的二维矩阵,进而可供 simulink作为输入信号使用
%%%% 定义仿真时间
sim_time = 10;    % 10s
%%%% 定义仿真步长,由于我的数据有连续50个角度值,因而这里设为50步
sim_step = 50;    % 50 步

%%%% 生成时间戳
for i=1:sim_step 
    time_stamp(i,1) = i * sim_time / sim_step;
end

%%%% %%%% 将时间戳和theta2数据生成可直接供FromWorkspace模块使用的参数 theta
theta = [time_stamp,theta2]; %% 生成二维矩阵,第一维为时间戳,第二维为对应数值 theta2

%%%% 这样便生成了可直接供FromWorkspace模块使用的参数 theta,然后进行仿真即可

%%%% %%%% %%%%  仿真
%%%% 调用sim函数对simulink模块进行 sim_time时长的仿真(这里既10s)
sim(\'my_5_HumanLowerLimb_temp\',sim_time)