在simulink的嵌入式matlab函数中使用scatterInterpolant变量

Posted

技术标签:

【中文标题】在simulink的嵌入式matlab函数中使用scatterInterpolant变量【英文标题】:use scatteredInterpolant variable in embedded matlab function in simulink 【发布时间】:2016-05-10 09:56:42 【问题描述】:

有什么办法吗

Surface = scatteredInterpolant(measurement_xz(:,1)*1E-3,measurement_xz(:,2)*1E-3,measurement_xz(:,3));

measurement_xz 是我的 simulink 模型的启动脚本中的一些数据,然后在 simulink 模型的嵌入式 matlab 函数中使用 Surface,即

///内嵌matlab函数

function V = fcn(x,z)
V = Surface(x,z);

? 当我即尝试使用Surface 作为V 的参数时,就像

function V = fcn(x,z,Surface)
V = Surface(x,z);

在端口和数据管理器中将Surface 设置为参数我得到错误

数据'Surface'初始值的表达式'Surface'必须 评估为数字或逻辑

【问题讨论】:

什么是嵌入式matlab函数,没听说过。我假设您正在谈论其中之一:回调函数、“解释的 MATLAB 函数”块或“MATLAB 函数”块? 我的意思是matlab功能块 【参考方案1】:

Matlab Function 模块不支持您尝试执行的操作,MATLAB 无法为其生成代码。问题是:

您正在尝试访问在范围内不可见的变量Surface scatteredInterpolant 根本不支持代码生成(至少在我的 MATLAB 版本中,可能在最近的版本中得到改进)。

要在代码级别解决此问题,您可以切换到解释型 MATLAB 代码。这可以通过切换到 Interpreded MATLAB 模块或使用 coder.extrinsic 来完成。这是一个快速简单的修复方法,但我建议不要这样做,因为它可能会导致模型变慢。相反,我建议切换到lookup table,它也能够进行插值。

【讨论】:

以上是关于在simulink的嵌入式matlab函数中使用scatterInterpolant变量的主要内容,如果未能解决你的问题,请参考以下文章

Simulink 中的嵌入式函数问题

simulink仿真运行一直卡在5%

使用嵌入式matlab功能块的simulink模型中信号的频率内容?

psim什么版本能和matlab联合仿真,psim与simulink联合仿真步骤

matlab中simulink怎样输入s^2+2s+1,用哪个模块?

simulink中的matlab function函数怎么设置初值?