[MatLab] Prodotto scalare

Mrhaha
Salve ragazzi,
secondo voi qual è il modo più efficace per fare un prodotto scalare tra due vettori in Matlab?
Io se ho due vettori $x,y$, con la stessa lunghezza, faccio $x*y'$, ma la prof ha detto che non è un buon metodo.

Vi ringrazi anticipatamente! :D :D

Risposte
apatriarca
Con ogni probabilità qualsiasi metodo genera lo stesso codice ed è quindi uguale. Immagino comunque che il metodo migliore possa essere la funzione dot..

Mrhaha
Sì sul risultato non dovrebbero esserci differenze, ma quello che uso io secondo la prof richiede una perdita in termini di tempo perché MatLab trasforma temporaneamente un vettore riga in un vettore colonna, e questo richiede un inutile spreco di tempo evitabile con dot.

apatriarca
Matlab esiste da parecchio tempo ed è stato molto ottimizzato per questo genere di operazioni. Dovrebbe essere perfettamente in grado di rendersi conto che quello è un prodotto scalare e che quindi non è necessario allocare un vettore colonna temporaneo.. Una volta forse problemi del genere (ma più che altro i cicli) era molto più lenti delle funzioni più specifiche o del codice vettorializzato, ma ora le differenze sono molte meno e in questi casi semplici sono certamente nulle. Era insomma vero nelle prime versioni di Matlab ma non più.. Anche le alternative open source sono in grado di capire che quello è un prodotto scalare e ottimizzarlo..

Mrhaha
Mmm...ho capito! Grazie apatriarca! ;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.