【发布时间】:2021-01-25 13:47:45
【问题描述】:
我想像使用 MATLAB 中的函数一样使用 Simulink 模块(MATLAB 函数)。这意味着我已经有了一个复杂的 Simulink Model,我只想在 Matlab 中使用 Model 的一些模块。
【问题讨论】:
我想像使用 MATLAB 中的函数一样使用 Simulink 模块(MATLAB 函数)。这意味着我已经有了一个复杂的 Simulink Model,我只想在 Matlab 中使用 Model 的一些模块。
【问题讨论】:
如果您想从 MATLAB 运行 simulink 模型,请使用命令 sim('YourSimulinkModel.slx'),
在您的 simulink 模型中,使用块 To Workspace(地址:simulink/Sinks/To Workspace)。将simulink模型执行后的结果导出到MATLAB Workspace。
【讨论】:
以下是一个简单的 Simulink 系统示例,该系统从 MATLAB 脚本读取变量、运行模型并将输出导出到工作区窗口。模型中使用的任何变量名称都会自动从调用/执行模型的 MATLAB 脚本中提取。输出是通过使用接收器块获得的,允许将模型的一部分直接导出到工作区面板。下面的系统将输入加 2,然后乘以 2。同样,此设置也适用于 fcn,用户定义的功能块。
%Variables used in model%
Input = 5;
%Calling model and returning results from Simulink model%
Results = sim('Model.slx');
Results.Output.Data
使用 MATLAB R2019b 运行
【讨论】:
首先要考虑以下几点:
- 当您想将其用作函数时,您必须运行整个模型 (Simulink)。部分模型无法运行
根据以下两个条件,您可以通过两种方式进行:
让我们一一看看:
如果您在 MATLAB 中使用 Interpreted MATLAB function (Interpreted MATLAB fcn) 或只是 simple MATLAB function (fcn) 创建了函数,您实际上可以访问以下代码这些来自您的工作区。复制这些文件的代码,编写自己的函数。
如果您已经在 Simulink 中创建了函数,并且除了使用模型本身之外别无其他选择,请执行以下操作:
A. Define all input as variables in your model , using '**from workspace**'
B. Define all your outputs using : '**To workspace**'
C. Define your input variables in your workspace first.
load('data.mat'); % this can be your input data
D. define your model as a system in a script file
sys = 'mysimulinkmodel'
E. run model from your script file as follows:
data_out = sim(sys) or directly, sim("mysimulinkmodel")
运行模型后,您可以访问 data_out 中的所有输出数据。
希望你能解决这个问题。
【讨论】: