Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich habe eine 4D-Array von Messungen in MATLAB. Jede Dimension stellt einen anderen Parameter für die Messung. Ich möchte die Maximal- und Minimalwert und den Index (das heißt, die Parameter) jeder finden.

Was ist der beste Weg, es zu tun? Ich denke, ich kann in jeder Dimension den max des max des max nehmen, aber das scheint wie eine Flickschusterei.

War es hilfreich?

Lösung

Schnell Beispiel:

%# random 4 d array with different size in each dim
A = rand([3,3,3,5]);

%# finds the max of A and its position, when A is viewed as a 1D array
[max_val, position] = max(A(:)); 

%#transform the index in the 1D view to 4 indices, given the size of A
[i,j,k,l] = ind2sub(size(A),position);

, um das Minimum zu finden, wird als Übung.)

Nach einem Kommentar: Wenn Sie nicht die Anzahl der Dimensionen des Arrays A wissen und können den „[i,j,k,l] =“ Teil daher nicht schreiben, verwenden Sie diesen Trick:

indices = cell(1,length(size(A)));

[indices{:}] = ind2sub(size(A),position);

Andere Tipps

für die zweidimensionale Anordnung, sage ich Sie können nur die Min / Max-Funktion zweimal verwenden. n-mal für die n-dimensionales Array. zB: a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];

for minimum:  min(min(a,[],1))
             ->  the answer will be -2. 

können Sie die Dimension Parameter in min / max 2 als auch setzen. da dies die Funktion zweimal, zum zweiten Mal auf dem Minimum / Maximum-Element-Vektor der Dimension Aufruf u wählen.

In ähnlicher Weise können Sie (max(max(a,[],1)) tun das Maximum zu erfahren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top