我希望在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,
答案 0 :(得分:1)
您的伪代码应该作为MATLAB Function块(支持MATLAB函数子集的代码生成)。我真的看不到基于零和一的索引的问题吗?
对于更复杂的逻辑,Stateflow是一个非常强大的工具,但它是一个附加组件,所以如果你还没有它,你需要分出更多的钱。我同意这一点,除了非常简单的逻辑算法之外,纯粹的Simulink = blocks方法会变得非常麻烦。