2012-02-27 40 views
4

在Matlab編碼器中運行時,某些函數需要輸入爲常量。 我希望能夠找到一個方法來聲明輸入爲常數之前,它是輸入作爲問題的情況爲例:常量和Matlab編碼器

function foo = subsubfunction(x,y)    
     [B,A]=butter(1,x/y); 

這將返回錯誤「所有的輸入必須是恆定的」

如何聲明x和y作爲常量,以便butter()變得快樂?我已經嘗試了很多解決方案,很遺憾沒有找到真正令人滿意的東西。如果可以使用命令行操作coder.newtype('constant',x)它可以簡化所有操作。

+0

你真的是指常數或只是一個值而不是矢量/數組嗎?你可以使用'numel'函數... – Smash 2012-03-02 15:55:02

+0

你好,謝謝你的答案!但是,你怎麼說我可以用'numel'來解決這個問題呢?以哪種方式確保matlab輸入是恆定的? – 2012-03-02 16:28:17

回答

2

在該函數中使用coder.const,以便函數butter知道您正在傳遞一個常量輸入。該文檔可用here

function foo = subsubfunction(x,y)    
    [B,A]=coder.const(@butter,1,x/y); 

注意:你不能在生成的代碼改變x/y值。您可以單獨更改xy,但不是這兩個數字的比率。

+0

您提到的文檔需要登錄,請檢查此文檔是否相似,並考慮更新鏈接:http://www.mathworks.nl/help/simulink/slref/coder.const.html – 2014-01-14 14:39:25

+0

當然。謝謝@DennisJaheruddin。更新了鏈接! – 2014-01-14 14:46:10