2016-05-10 43 views
0

有沒有辦法做到即使用scatteredInterpolant變量在Simulink

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

其中measurement_xz在啓動腳本的一些數據,我的Simulink模型,然後在嵌入式MATLAB函數使用Surface Simulink模型,即

///嵌入式MATLAB功能

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

? 當我即嘗試在端口和數據管理器出現錯誤

表達「表面」數據的初始值,使用Surface作爲參數V

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

Surface集作爲參數'Surface'必須 評估爲數字或邏輯

+0

什麼是嵌入式matlab函數,我從來沒有聽說過。我假設你正在談論其中之一:回調函數,「解釋的MATLAB函數」塊或「MATLAB函數」塊? – Daniel

+0

我的意思是matlab功能塊 – VGD

回答

1

你所要做的並不是Matlab功能模塊所支持的,MATLAB無法爲它生成代碼。這些問題是:

  • 您試圖訪問變量Surface這是不可見的範圍在所有的代碼生成(至少在我的MATLAB版本不支持
  • scatteredInterpolant,可能在近期得到改善版本)。

要在代碼級別修復此問題,您可以切換到解釋的MATLAB代碼。這可以通過切換到解釋的MATLAB塊或使用coder.extrinsic來完成。這是一個快速和簡單的修復,但我建議不要這樣做,因爲它可能會導致一個緩慢的模型。相反,我建議切換到lookup table,它也可以插入。