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!
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).
Ter verduidelijking: Xenion heeft her hier over elementsgewijs vermenigvuldigen (uitkomst is een vector), JorisL heeft het hier over een inproduct (uitkomst is een scalair).