Springen naar inhoud

Vectoren in Matlab


  • Log in om te kunnen reageren

#1

Puntje

    Puntje


  • >250 berichten
  • 316 berichten
  • Ervaren gebruiker

Geplaatst op 25 september 2014 - 11:15

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!

Veranderd door Puntje, 25 september 2014 - 11:16


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 25 september 2014 - 15:58

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.


#3

JorisL

    JorisL


  • >250 berichten
  • 555 berichten
  • Ervaren gebruiker

Geplaatst op 10 oktober 2014 - 01:38

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).

Veranderd door JorisL, 10 oktober 2014 - 01:39


#4

physicalattraction

    physicalattraction


  • >1k berichten
  • 3102 berichten
  • Moderator

Geplaatst op 10 oktober 2014 - 06:28

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






0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures