Per come hai scritto nella domanda:
max(A)
restituisce un vettore con il valori massimi i ogni colonna e non i valore massimo tra tutti gli elementi della matrice.
Per trovare il valore massimo all'interno di una matrice e gli indici (riga, colonna) della sua posizione all'interno della matrice puoi fare così:
% Creazione di una matrice di porva
A=randi(100,5,5)
% Identificazione del valore massimo
[max_val,pos_idx]=max(A(:))
% Identificazione degli indici (riga,colonna) del valore massimo
[row_idx,col_idx]=ind2sub(size(A),pos_idx)
L'istruzione:
% Identificazione del valore massimo
[max_val,pos_idx]=max(A(:))
ritorna in "max_val" il valore massimo tra tutti gli elementi della matrice ed in "pos_idx" l'indice-posizione del valore massimo.
La notazione "A(:)" concatena in successione le colonne della matrice a costituire un unico vettore colonna.
In questo modo la funzione "max", operando di default sulle colonne, ritorna un unico valore, cioè il valore massimo tra tutti gli elementi della matrice.
Dal momento che con la notazione "A(:)" abbiamo "trasformato" la matrice in un vettore colonna, la posizione del valore massimo (ritornata in "pos_idx") corrisponde alla riga del vettore colonna e non alla posizione del valore massimo all'interno della matrice, quindi c'è bisogno di un ulteriore passaggio.
L'istruzione:
% Identificazione degli indici (riga,colonna) del valore massimo
[row_idx,col_idx]=ind2sub(size(A),pos_idx)
consente, tramite la funzione "ind2sub", di calcolare gli indici "riga" e "colonna" a partire dall'indice colonna.
In conclusione:
[max_val,pos_idx]=max(A(:))
% Identificazione degli indici (riga,colonna) del valore massimo
[row_idx,col_idx]=ind2sub(size(A),pos_idx)
max_val ==> valore massimo all'interno della matrice A
row_idx ==> riga
col_idx ==> colonna
quindi il valore max_val si trova in A(row_idx,col_idx)
Hope this helps.
Qapla'