在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变量的主要内容,如果未能解决你的问题,请参考以下文章
使用嵌入式matlab功能块的simulink模型中信号的频率内容?
psim什么版本能和matlab联合仿真,psim与simulink联合仿真步骤