如何将matlab的程序代码导入simulink

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将matlab的程序代码导入simulink相关的知识,希望对你有一定的参考价值。

1、首先启动Matlab软件,在软件左下角有类似电脑系统的“开始”菜单,单击打开。

2、启动开始菜单后,找到“simulink”选项,单击“Library Browser”选项即可启动。

3、在“Library Browser”界面单击“File”菜单,选择“New”,在选择“Model”,即可启动建模界面。

4、通过将图形拖入模型界面即可完成添加,将图形用线连接,完成建模,这就是simulink建模。

5、还可以单击matlab软件上方“simulink”按钮即可启动,把鼠标放在按钮上都会有提示。

参考技术A 导入simulink
在similink里面有个 From File模块
你把你的.m文件名输入到那模块

运行Simulink模型可以使用sim函数,仿真结果可以通过以下几种方式导出:
(1)设置Scope模块的Save data to workspace;
(2)模型中加入Outport模块,并设置模型的Workspace I/O;
(3)使用To Workspace模块项工作区导入数据。
参考技术B 在similink里面有个 From File模块
你把你的.m文件名输入到那模块试试

参考资料:http://zhidao.baidu.com/question/100318053.html?oldq=1

Matlab、Simulink、导入的使用

【中文标题】Matlab、Simulink、导入的使用【英文标题】:Matlab, Simulink, Use of Import 【发布时间】:2012-11-13 08:55:10 【问题描述】:

我尝试创建一个可以运行 simulink 模型的 matlab 文件。 但是将数据从 MATLAB 发送到 simulink 模型时存在问题。 在模型中,我有 Import Block 我想从 matlab 发送我的数据流。

我目前的matlab代码是。

function result = CallSimulinkModel(modelName, timeStep, inputMatix, key)
    if(timeStep<=0) 
        error('MATLAB:CallSimulinkModel','Timestep is lower or equal with 0');
    end
    endTime = max(size(inputMatix))*timeStep;
    result = SubCallSimulinkModel(modelName, 0:timeStep:endTime, inputMatix, key);
    %OutVector.const = inConst;
end

function [result,constants] = SubCallSimulinkModel(var_model,time_var,inputMatix, K)
    var_setting = simset(...
        'SrcWorkspace','current'... 
    );
    % How to feed the sim model with the data from input matrix as Inport
    % 1, Inport 2, ...?
    [~,~,result] = sim(var_model, time_var, var_setting);
    constants = K;
end

型号是

我从 simulink 获取结果或设置常量 K.in1 没有问题

【问题讨论】:

【参考方案1】:

找到一个可行的解决方案。

% For MATLAB R2012a
function [result,time] = RunSimulinkModel(modelName, timeStep, inputMatix, key)
    if(timeStep<=0) 
        error('MATLAB:RunSimulinkModel','Timestep is lower or equal with 0');
    end
    endTime = max(size(inputMatix))*timeStep-timeStep;

    %CCC = [time_var;D]'
    % Is a 2 or more column that the first column is a time vector that
    % hold all time and the other columns hold the data.
    dataMatrix = [0:timeStep:endTime;inputMatix]';

    [result,time] = RunSimulinkModelSub(modelName, timeStep,dataMatrix,key);

end

function [result,time] = RunSimulinkModelSub(var_model,var_steptime, D,K)  %#ok<INUSD>
    var_setting = struct(...
        'SrcWorkspace','current',... 
        'SaveTime','on','TimeSaveName','tout', ...
        'SaveOutput','on','OutputSaveName','yout', ...
        'LoadExternalInput', 'on', 'ExternalInput', 'D',...
        'FixedStep', 'var_steptime' ...
    );
    var_row_result = sim(var_model, var_setting);
    result = var_row_result.get('yout');
    time = var_row_result.get('tout');
end

'LoadExternalInput', 'on', 'ExternalInput', 'D',... 将告诉模型使用 来自D 的数据作为时间向量和数据向量。

【讨论】:

以上是关于如何将matlab的程序代码导入simulink的主要内容,如果未能解决你的问题,请参考以下文章

如何把MATLAB中的数据读入到SIMULINK中

.m 文件中的工作区不会导入到 simulink 模型中。 MATLAB

simulink如何导入workspace中的三维矩阵?

论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot

matlab工作空间数据导入simulink

Simulink - 通过 MATLAB 命令行将 While 迭代器模块添加到子系统