2016-04-11 11 views
1

Ich möchte den Index des ersten Nicht-Null-Elements in einem 2-D-Array in Simulink finden, genau wie ich die find(u1, 1) verwenden würde Befehl in MATLAB.Finden Sie den Index des ersten Nicht-Null-Elements in einem 2-D-Array in Simulink

Zum Beispiel in MATLAB würde ich tun:

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

Haben Sie den 'find' Block versucht? – Daniel

+0

Ich bin mir nicht sicher, ob ich deine Frage gut verstanden habe. Sie haben einen 2D-Vektor (eine Matrix) und möchten den Elementindex ij des ersten Elements finden, der nicht Null oder kleiner als Null ist? Wie möchten Sie den 2D-Vektor lesen? Wenn Sie eine solche Matrix haben: [1 2 3; -1 -3 4] Das erste "kleiner als Null" -Element wäre das Element (2,1), das -1 entspricht. Das erste Nicht-Null-Element wäre das (1,1), das gleich 1 ist. Könnten Sie sich besser erklären? Fab. – kalmanIsAGameChanger

Antwort

0

Sie verwenden, um die Find und MinMax Blöcke wie so

blocks

Der Eingang logischer Vektor sein sollte. Irgendwelche vorherigen Berechnungen können verwendet werden, um dies zu erreichen.

In Ihrem Beispiel möchten Sie einen Relational Operator Block verwenden, um die < Bedingung zu testen, und den Ausgang anstelle des obigen Eingangs verwenden.

Der Find Block gibt alle Indizes von Nicht-Null-Elementen zurück. Der Block MinMax (der auf das Minimum gesetzt wird) kann dann verwendet werden, um den kleinsten Index zu erhalten.


Sie können einen Logical Operator Block verwenden, auf OR, zu prüfen, ob ein Wert wahr ist, bevor Sie Find verwenden. Wenn kein Wert wahr ist, gibt Find ein leeres Array zurück, das beim Eingeben des MinMax-Blocks einen Fehler verursacht. Dies kann unter Verwendung der If/Else If Logik vermieden werden, wie in der documentation für den Steuerungsablauf gezeigt.