SIMULINK If-Else流程块及其对嵌入式代码生成的影响

时间:2013-10-02 10:05:51

标签: matlab function code-generation simulink flow

我希望在SIMULINK中使用if-else流程块(或执行它的自定义matlab函数),并使用嵌入式编码器为其生成代码。我之前遇到过使用SIMULINK中使用的MATLAB功能块进行零和一次索引的问题。似乎实际上没有办法绕过它。我如何在SIMULINK中建模if-elseif逻辑呢?

我曾尝试使用switch和mux块,但它们太乱了,可能导致我试图实现的原始流逻辑的错误解释。

我的流逻辑(PSEUDOCODE)是:

if (a<b) then
    p = x;
else if (a<c) then
    p = max(y, some_const_val);
else
    p = z;

有人可以建议吗?

KR,

1 个答案:

答案 0 :(得分:1)

您的伪代码应该作为MATLAB Function块(支持MATLAB函数子集的代码生成)。我真的看不到基于零和一的索引的问题吗?

对于更复杂的逻辑,Stateflow是一个非常强大的工具,但它是一个附加组件,所以如果你还没有它,你需要分出更多的钱。我同意这一点,除了非常简单的逻辑算法之外,纯粹的Simulink = blocks方法会变得非常麻烦。