首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MATLAB脚本初始化Simulink模型的常数?

如何从MATLAB脚本初始化Simulink模型的常数?
EN

Stack Overflow用户
提问于 2020-02-03 07:54:09
回答 1查看 1.7K关注 0票数 2

我正在用Matlab Function模块构建一个Simulink模型。这些函数块有很多常量,例如g=9.8。我想在Matlab脚本中一次初始化所有这些常量,这样我就不必在每个函数块中这样做了。

到目前为止,我一直在尝试这样做:

  • Matlab Function块中,我已经使用Constant块初始化了变量,该块作为函数块的输入。这个系统可以工作,但是在模型中有很多常量块,而且它正在变得非常聚集。

  • 我还尝试在Matlab脚本中将这些变量声明为global变量。这不是我尝试过的work.
  • Another方式,而是为这些常量创建一个函数脚本,然后在Matlab Function块中加载这个函数脚本。这是行不通的。

我是否可以从Matlab脚本中初始化这些值,而Simulink模型从Matlab脚本中读取这些值,而不用使用这些常量块呢?

代码语言:javascript
复制
%refercode
%matlabscript

Initialization values;
sim('filenmae.slx');
post processing;

%simulink model 

constant blocks(initialization values) -> matlab function block -> output;

%end

解决这个问题最好的方法是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2020-02-03 16:25:35

您可以有一个包含变量的结构,这些变量可以选择性地在Matlab Function块中使用。这意味着您可以只有一个Constant块和额外的函数输入,这与脚本无关。

这篇MathWorks文章展示了如何将结构转换为Simulink总线,以便在模型中使用(不能直接在常量块中使用结构):

https://blogs.mathworks.com/simulink/2011/12/05/initializing-buses-using-a-matlab-structure/

给你这样的东西:

代码语言:javascript
复制
% initialise constants within struct, keeps the workspace tidy too!
vars = struct();
vars.g = 9.8;
vars.lambda = 2;
% Create bus data for the variables struct
varsInfo = Simulink.Bus.createObject(vars);
% Sim the model
sim( 'myModel.slx' );

将常量块配置为总线,如链接文章中所述:

然后,您就可以在您的函数中访问它。

代码语言:javascript
复制
function y = ( y, vars )
    % MATLAB Function block function within myModel.slx
    y = vars.lambda + u * vars.g;
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60035128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档