【问题标题】:Simulink - Use .Mat as extern input variable to auto-coded c functionSimulink - 使用 .Mat 作为外部输入变量来自动编码 c 函数
【发布时间】:2019-02-06 23:39:34
【问题描述】:

我有一个能够自动编码的 Simulink 模型。我将一些需要更改为外部的输入(vx、vy、vz、x、y、z)设置为外部,到目前为止效果很好。现在我需要访问将根据测试周更改的 .Mat 数据文件(想想 GPS 年历数据)。不必在我的工作区中使用新的 .Mat 重新自动编码,如果我可以将其设置为外部变量并像其他变量一样从我的 .cpp 包装器中提供数据,那就太好了。任何提示都会很棒!

Simulink 模型:

MATLAB 功能块代码:

查看数据:

the matlab code gets more complicated. It utilizes every column/variable, and uses them in  a loop. I can edit the init function, but there's an init function:
alm_data = coder.load('alm_data.mat');
%init vector sizes
ps=zeros(3,length(alm_data.alm_data); %more of this
end
then used in loop:
for i =1:length(alm_data.alm_data)
vs=alm_pos_vel(alm_data.alm_data(i));
%more of this
end

【问题讨论】:

  • minimal reproducible example 会有所帮助。
  • 好吧,我做了一个简单的例子。有没有办法在这里上传 .slx 和 .mat 文件?或者我可以截取所有内容。
  • @JesperJuhl 如果有帮助,我添加了图片

标签: c++ matlab simulink


【解决方案1】:

Rapid Simulation Target 的 -p 可选输入就是为此目的而设计的,尽管 .mat 文件的格式必须是特定类型。

可以在此处找到示例:Using RSIM target over range of parameter values

它显示了在 MATLAB 中创建 mat 文件,但可以使用适当的 mat 文件 API 在 C 或 C++ 中创建它:MAT-File API Library and Include Files

【讨论】:

  • 如果有帮助,我添加了图片。我没有完全按照 RSIM 通读。
  • 您展示的数据集的简化程度如何?鉴于上面的图片,我建议将alm_data(或者甚至只是健康列,如果这就是所有需要的话)作为MATLAB Function块的输入,那么它的值可以从工作区中以完全相同的方式获得因为thetaomega 在链接示例中。
  • 编辑:无法弄清楚如何格式化,所以我在主要问题中发布。感谢您迄今为止的帮助! matlab 代码变得更加复杂。它利用每一列/变量,并在循环中使用它们。我可以编辑初始化函数,但有一个初始化函数:alm_data = coder.load('alm_data.mat'); %init 向量大小 ps=zeros(3,length(alm_data.alm_data); %more 此端然后在循环中使用: for i =1:length(alm_data.alm_data) vs=alm_pos_vel(alm_data.alm_data(i)); %more
  • 我喜欢将单个列作为向量从 c++ 发送的想法,但是有没有办法在我的 init 函数中将它们重建为 .mat ,这样它就不会弄乱其余的m 文件?
猜你喜欢
  • 2023-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多