在Simulink中查找二维数组中第一个非零元素的索引

时间:2016-04-11 20:45:17

标签: matlab simulink

我想在Simulink中找到二维数组中第一个非零元素的索引,就像我在MATLAB中使用find(u1, 1)命令一样。

例如,在MATLAB中我会这样做:

u1 = [46.15 61.21; 22.5 45.3; -1 -1; -1 -1; -1 -1];

idx= find(u1<0, 1) % The answer would be: idx = 3

1 个答案:

答案 0 :(得分:0)

您可以使用FindMinMax块,如此

blocks

输入应该是您的逻辑向量。任何先前的计算都可用于获得此信息。

对于您的示例,您可能希望使用Relational Operator块来测试<条件,并使用输出代替上述输入。

Find块将返回非零元素的所有索引。然后可以使用MinMax块(设置为最小值)来获得最小的索引。

在使用Logical Operator之前,您可能希望使用设置为OR的Find块来测试是否有任何值。如果没有值为真,Find将返回一个空数组,该数组在输入MinMax块时将出错。使用If / Else If逻辑可以避免这种情况,如控件流程documentation所示。

相关问题