1
我想查找Simulink中二維數組中第一個非零元素的索引,就像我將使用find(u1, 1)
命令在MATLAB中。在Simulink中查找二維數組中第一個非零元素的索引
例如,在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
我想查找Simulink中二維數組中第一個非零元素的索引,就像我將使用find(u1, 1)
命令在MATLAB中。在Simulink中查找二維數組中第一個非零元素的索引
例如,在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
您可以使用Find
和MinMax
塊,像這樣
輸入應該是你的邏輯載體。任何以前的計算都可以用來獲得這個。
對於您的示例,您希望使用Relational Operator
塊來測試<
條件,並使用輸出代替上述輸入。
Find
塊將返回非零元素的所有索引。然後可以使用MinMax
塊(設置爲最小值)來獲得最小的索引。
您可能需要使用一個Logical Operator
塊,設置爲OR,測試使用Find
之前的任何值是否爲真。如果沒有值,則Find
將返回一個空數組,該數組將在輸入MinMax
塊時出錯。這可以使用If
/Else If
邏輯來避免,如控制流程的documentation所示。
你試過'發現'塊嗎? – Daniel
我不確定我是否理解你的問題。 你有一個2D矢量(矩陣),你想找到第一個元素的非零或小於零的元素索引ij? 你想如何讀取2D矢量? 如果你有這樣的矩陣: [1 2 3; -1 -3 4] 第一個'小於零'元素將是等於-1的元素(2,1)。第一個非零元素將是(1,1)等於1. 您能否更好地解釋自己? Fab。 – kalmanIsAGameChanger