2012-10-31 316 views
0

Simulink有一個名爲「Matlab函數」的模塊,它允許您在Simulink流程圖中創建自定義函數。Simulink中的Matlab函數不支持RMS

我在Simulink Matlab函數模塊中實現了一個簡單的函數。我的函數包含一個調用Matlab的內置rms()。當我運行Simulink模型,我得到以下錯誤:

The function 'rms' not supported for standalone code generation 

如果我從Simulink模型我的matlab函數刪除rms,錯誤消失和模型完美運行。

問題:

  • 是否有使用Matlab的rms Simulink中的方法嗎?
  • 是否還有許多其他本地Matlab調用不能在Simulink中使用?

回答

1

我只是想澄清和擴大在learnvst的回答。

即使您只是試圖模擬包含MATLAB功能塊的模型,並且沒有明確嘗試執行代碼生成,您仍然會得到not supported for standalone code generation錯誤。

由於learnvst表明,可以在代碼生成中使用的函數有多種限制。然而,如果你只是想模擬你的模型,Simulink允許你這樣做,如果你將這些「黑名單」函數表示爲外部。這讓Simulink知道這些功能僅用於模擬目的,不會成爲代碼生成的一部分。

在您的特定情況下,您的通話以前在什麼地方添加以下代碼行rms

coder.extrinsic('rms'); 

在MATLAB函數聲明函數,如外在的,甚至當你在執行代碼生成通常很有用。例如,您可能希望在仿真期間使用plot命令可視化您的數據,但顯然不需要將plot命令作爲生成的代碼的一部分。

有關將函數聲明爲外部函數的更多信息,請參閱this doc

+0

謝謝!我仍然沒有嘗試過,但是如果我對'coder.extrinsic'有任何困難,我會跟進。 – solvingPuzzles

+0

經過測試...它的工作原理! :) – solvingPuzzles

0

錯誤的not supported for standalone code generation部分建議,我認爲你要使用像Matlab編碼器產品,使可執行文件或本機代碼。如果是這樣的話,有許多天真的調用不能直接用在覈心Matlab和工具箱中。編碼器產品僅支持該語言的一個子集。更多信息可以在這裏找到 。 。 。

http://www.mathworks.co.uk/products/matlab-coder/description2.html

至於您的來電rms,只計算平方的平均值的根。嘗試使用類似的東西來創建替代。 。 。

sqrt(mean(x.^2))

...其中x是信號。