2
我希望在SIMULINK中使用if-else流程塊(或自定義matlab函數),並使用嵌入式編碼器爲其生成代碼。我以前遇到過使用SIMULINK中的MATLAB函數塊進行零和基於索引的索引問題。似乎幾乎沒有辦法繞過它。那麼我如何在SIMULINK中建立一個if-elseif邏輯?SIMULINK If-Else流程塊及其對嵌入式代碼生成的影響
我嘗試過使用開關和多路複用器模塊,但它們太雜亂,可能會導致我試圖實現的原始流程邏輯的誤解。
我流邏輯(僞)是:
if (a<b) then
p = x;
else if (a<c) then
p = max(y, some_const_val);
else
p = z;
可能有人請提出一個方法?
KR,
我已經知道stateflow。問題是我不想訂閱另外幾千英鎊的模塊集,而沒有探索基本的MATLAB和SIMULINK發行版中的所有選項。只是爲了跟隨你對「無法看到零和一個索引的任何問題」的評論,你真的爲MATLAB函數塊生成嵌入式代碼(使用嵌入式編碼器)嗎?或者當您使用代碼生成顧問來幫助解決這個問題時,您是否關閉了一些支票?我會很感興趣知道。因爲它不適合我。 – ha9u63ar
不,我沒有真正嘗試生成代碼(或者如果我過去做過,實際上我沒有仔細查看代碼的樣子,只要它是功能性的)。你能解釋一下什麼不適合你,或者是什麼問題?這是否與生成的C代碼使用基於一個索引而不是基於零的索引相同? – am304
由於基於1的/基於0的索引,代碼生成顧問始終警告有關M功能塊。很明顯,我不希望保留任何警告並從代碼生成顧問處獲得全面通過。我已經看到你無法通過代碼生成顧問程序傳遞MATLAB功能塊而沒有任何警告。沒有錯誤!這是一個警告!您可以選擇忽略它,但是您的代碼生成將失敗,因爲您尚未設法清除所有警告和錯誤!但是,您可以將模型配置參數設置爲忽略警告,但其他重要的參數將被忽略! – ha9u63ar