Puntje
Artikelen: 0
Berichten: 316
Lid geworden op: di 27 mei 2008, 21:03

Vectoren in Matlab

Hallo,
 
Ik heb een behoorlijk eenvoudige vraag, maar ik zie het gewoon niet. Ik wil in Matlab het volgende berekenen. Ik heb twee kolomvectoren [x1 ... xn] en [y1 ... yn] en ik wil hieruit een vector [x1y1 ... xnyn] berekenen. Ik vermoed dat er gewoon een functie voor bestaat maar ik kan de naam ervan niet vinden. Alvast bedankt!
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Vectoren in Matlab

Als je een "." voor een operator zet, dan wordt de operatie puntsgewijs uitgevoerd op vectoren/matrices van gelijke dimensies.
 
v1 .* v2 geeft dus een vector die de producten van de overeenkomende elementen van v1 en v2 bevat.
 
Dit kan je ook doen voor machtsverheffing en deling.
JorisL
Artikelen: 0
Berichten: 555
Lid geworden op: ma 30 jul 2007, 22:59

Re: Vectoren in Matlab

Xenion is volledig correct.
 
Wat je doet ziet eruit als (een stap in) het berekenen van een dot/scalair product.
Dat kan je ook in 1 korte uitdrukking doen.
Stel je hebt 2 kolomvectoren x en y dan is het scalair product te schrijven als x' * y.
 
Voor zover ik weet is die methode het snelst.  Ik wilde dit even meedelen omdat ik zelf ooit de functie dot() heb gebruikt.
Wat bleek? Dat scalair product naam +/- 50% van de tijd die mijn programma draaide in beslag.
 
Dat is geen alleen staand geval, meestal zit er in zo'n functie een error handler die een relatief grote overhead geeft.
Een ander voorbeeld hier van is circshift(). Daarmee kan je de elementen van een vector/matrix cyclisch verschuiven.
Deze is pas sneller dan een for-loop vanaf een bepaalde lengte (ik dacht in de orde van 100 elementen).
Gebruikersavatar
physicalattraction
Moderator
Artikelen: 0
Berichten: 4.163
Lid geworden op: do 30 mar 2006, 15:37

Re: Vectoren in Matlab

Ter verduidelijking: Xenion heeft her hier over elementsgewijs vermenigvuldigen (uitkomst is een vector), JorisL heeft het hier over een inproduct (uitkomst is een scalair).

Terug naar “Informatica en programmeren”