2013-08-07 5 views
6

Ho più matrici della stessa dimensione e voglio confrontarle. Di conseguenza ho bisogno di una matrice che mi dia il massimo del 3 per ogni valore.confrontare più matrici matlab

io chiarire cosa intendo con un esempio:

Ho 3 matrici con dati di 3 persone.

Mi piacerebbe confrontare questi 3 e ottenere una matrice come risultato.

In quella matrice ogni cella/valore dovrebbe essere il nome della matrice che aveva il valore più alto per quella cella. Quindi se nelle 3 matrici il primo valore (1 colonna, 1 riga) è di conseguenza 2, 5, 8 il primo valore della matrice risultato dovrebbe essere 3 (o il nome della matrice 3).

risposta

0

modificare Come io non conoscevo il secondo argomento della massima funzione, qui è quello che non dovrebbe usare:

vecchia Beh, rapida & sporca:

x=[2 5 8]; 
w=max(x) 
[~,loc] = ismember(w,x) 
+0

La domanda si riferisce a matrici e non con quelli singoli –

+0

@LuisMendo accettato e corretto :) –

5

Se le tre matrici sono A, B, C, fare questo:

[~, M] = max(cat(3,A,B,C),[],3); 

Crea una "matrice" 3D e ingrandisce attraverso la terza dimensione.

+0

questo mi dà il valore più alto, ma come ho capito, lui (o lei) sta chiedendo la posizione ... –

+0

D'accordo, questo è sbagliato così com'è – Dan

+0

Oops. Hai ragione, mio ​​male. Corretto. Grazie! –

2

loro concatenate sul 3 ° dimensione, e l'uso della seconda uscita dal massimo per ottenere esattamente quello che vuoi

A = rand(3,3); 
B = rand(3,3); 
C = rand(3,3); 

D = cat(3, A, B, C) 

[~, Solution] = max(D, [], 3) 

esempio:

D = 

ans(:,:,1) = 

    0.70101 0.31706 0.83874 
    0.89421 0.33783 0.55681 
    0.68520 0.11697 0.45631 

ans(:,:,2) = 

    0.268715 0.213200 0.124450 
    0.869847 0.999649 0.153353 
    0.345447 0.023523 0.338099 

ans(:,:,3) = 

    0.216665 0.297900 0.604734 
    0.103340 0.767206 0.660668 
    0.127052 0.430861 0.021584 

Solution = 

    1 1 1 
    1 2 3 
    1 3 1 
+0

ok grazie che ha funzionato :) – user2661122

+0

@ user2661122 nessun problema e benvenuto in SO. Se la risposta è corretta, devi accettarla facendo clic sul contorno del segno di spunta nella parte in alto a sinistra della domanda. Inoltre, se trovi una risposta utile, puoi anche dargli un voto facendo clic sul triangolo di puntamento verso l'alto anche in alto a sinistra. – Dan