2013-02-05 17 views
5

Sto lavorando con un codice MATLAB che ho ereditato da un'altra persona, non capisco il significato della linea q = [q; qi ']. Mi sento come se dovessi essere in grado di rimuoverlo, in modo che q = distribuire ...Cosa fa questo simbolo primo - MATLAB?

function [ q ] = ObtainHistogramForEachTarget(state, numberOfTargets, image, q) 

    for i=1 : numberOfTargets 
     qi = distribucion_color_bin_RGB2(state(i).xPosition,state(i).yPosition,state(i).size,image,2); 
     q = [q; qi']; 
    end 
end 

Qualcuno può spiegarmi questo?

+1

penso a memoria che rappresenta una trasposizione di una matrice, avrei bisogno di controllare. – legrandviking

+2

Sostituire '' 'con' .'' perché la prima è una complessa trasposizione coniugata e la seconda solo una trasposizione regolare. – ja72

+1

@ ja72 Se non lavori mai con numeri complessi un semplice '' 'dovrebbe essere sufficiente. Mentre il richiedente si avvicina a 'i' dovrebbe essere sicuro di mantenere le cose semplici. –

risposta

8

MATLAB dispone di numerose funzioni integrate per la gestione delle matrici. Il carattere speciale, ', per primo indica la trasposizione di una matrice.

La dichiarazione A = [ 1 2 3;4 5 6;7 8 9]' produce la matrice

A = 
    1 4 7 
    2 5 8 
    3 6 9 

speranza che questo aiuta

+7

Nota che '.'' è trasposta e' ''è complessa trasposizione coniugata. La differenza è molto importante quando si lavora con dati complessi. – shoelzer

4

Da l'aiuto di Matlab

aiuto ctranspose
'coniugato trasposizione Complex.
X' è il complesso trasposta coniugata di X.

B = ctranspose(A) is called for the syntax A' (complex conjugate 
transpose) when A is an object. 
2

La sintassi [X ; Y] concatena due matrici verticalmente. Quindi quella riga sta aggiungendo i risultati appena calcolati allo q già calcolato. Se si riassegnasse semplicemente q, si eliminerebbero tutti i calcoli che la funzione aveva già eseguito ogni volta attraverso il ciclo.

L'apostrofo anteriore ' esegue un coniugato complesso e traspone una matrice. Immagino che distribucion_color_bin_RGB2 restituisca probabilmente un vettore di colonna con valori reali e che l'autore volesse capovolgerlo in orizzontale prima di aggiungerlo alla matrice dei risultati.

Come ha sottolineato @ ja72, è preferibile utilizzare .' (solo transpose) per impostazione predefinita e ' solo quando si intende realmente un coniugato complesso, anche se si prevede che i dati siano reali.

0

in genere A 'è la trasposizione della matrice A, ma è traspondata coniugata. funziona per la matrice reale, non funziona per la matrice complessa

transpose (A) è la funzione di trasposizione reale, entrambi funzionano per matrice R e matrice C.

Io di solito uso A', è facile, ma ho cambiato la mia abitudine fino a quando mi trovo di fronte a bug FFT trasformazione