PDA

View Full Version : sommatoria in Matlab


MattiaAnimeRex
06-01-2011, 11:58
Ciao a tutti, il mio problema e' abbastanza semplice: solo che uso
Matlab da poco e non riesco a uscirne!

Sia dato il vettore A = [9 1;3 2; 5 8;4 9]' e il vettore M=[ 1 1]' (gli apici indicano che i vettori sono trasposti in modo che ogni coppia risulti un vettore colonna e non riga)

Devo implementare in Matlab un'espressione del tipo:

E=Σ ( (x(i)-M) * (x(i)-M)' )

dove la sommatoria va da 1 al numero di componenti di A (ossia sommatoria per i da 1 a 4),
per cui x(1)=(9 1), x(2)=(3 2) ecc

Come posso fare?
Spero che qualcuno di voi mi possa aiutare!!

MattiaAnimeRex
06-01-2011, 13:42
sum(x(:,i)) ti restituisce la somma sulla componente i-esima.

Scusa ma non ho capito, o forse non mi sono spiegato io :D
La sommatoria va fatta per ogni i, per cui al passo 1 avrei:

((9 1)-(1 1)) * ((9 1) - (1 1))' = [ 64 0; 0 0]

questo genera una matrice 2x2;
al passo successivo avro' invece

((3 2)-(1 1)) * ((3 2) - (1 1))' = [4 2; 2 1]

che andra' sommato al risultato precedente e dara': [68 2; 2 1]
e cosi' via fino all'ultima iterazione
Potresti scrivere direttamente il codice che devo utilizzare per fare cio' per favore?
Grazie

MattiaAnimeRex
06-01-2011, 22:26
beh, allora č ancora pių semplice:

result = zeros(2,2);
for i = 1:4
result = result + ((A(:,i)-M)*(A(:,i)-M).';
end


Scusa ma facendo cosi' non fa la somma di tutti,
bensi' restituisce result=result(i=3)+result(i=4)
l'avevo gia' provato.
Tuttavia non ho capito a cosa serve il punto che hai messo prima dell'apice:

.'

MattiaAnimeRex
07-01-2011, 09:11
cosė funziona, l'ho provato in matlab. restituisce la sommatoria dei valori in cui result contiene ogni volta il valore temporaneo fino all'indice i-esimo della sommatoria... lo vedi semplicemente esplicitando ciascun passaggio per ogni i. per

i=1; result(1) = primo_val_sommatoria;

i=2; result(2) = result(1) + secondo_val_sommatoria

ecc.ecc.ecc...

il " .' " equivale semplicemente all'operazione di trasposta, mentre il " ' " equivale all'hermitiana, ovvero alla trasposta coniugata. per numeri reali coincidono, ma č buona norma specificare.

Grazie mille, ora lo provo :D:D :D :D


EDIT: perfetto!!Grazie mille!!!