Springen naar inhoud

Matlab twee rijen verwisselen.


  • Log in om te kunnen reageren

#1

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 03 juni 2008 - 12:23

Als je in matlab in een matrix twee rijen wil verwisselen dan kan je dat als volgt doen:
Stel A is de betreffende matrix dan verwissel je de i en j de rij: A([i j],: )=A([j i],: ) Maar waarom werkt dit? maw wat doe je eigenlijk? Groeten.

Veranderd door Bert F, 03 juni 2008 - 12:24


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

#2

TD

    TD


  • >5k berichten
  • 24049 berichten
  • VIP

Geplaatst op 03 juni 2008 - 13:09

Even geleden dat ik de syntax goed gekende, maar ik dacht dat het zo zat: je steekt in matrix A, in rijen i en j (alle kolommen, vandaar de ,:) de rijen j en i (dus je verwisselt ze) van de huidige inhoud van matrix A (opnieuw alle kolommen).
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

#3

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 03 juni 2008 - 21:10

ik dacht dat je twee scalairen moest geven aan A is [i j] een scalair?

#4

TD

    TD


  • >5k berichten
  • 24049 berichten
  • VIP

Geplaatst op 03 juni 2008 - 21:40

Om precies n element uit A te selecteren wel ja, dan geef je rij- en kolomindex als argumenten.
Om een hele rij te selecteren, geef je een rij-index en dan ":" om alle kolommen eruit te nemen.
Die ":" staat er dan ter vervanging (of afkorting) van een vector met lle kolomindices.
Om twee rijen te selecteren (rijen i en j), een vector [i,j] en dan weer ":" voor alle kolommen.
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

#5

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 04 juni 2008 - 18:55

Ik blijf het raar vinden maar het werkt dus zullen we dat zomaar gebruiken. Groeten.

#6

TD

    TD


  • >5k berichten
  • 24049 berichten
  • VIP

Geplaatst op 04 juni 2008 - 19:20

Waarschijnlijk vind je nog wel wat extra uitleg over de syntax in de help-file van Matlab.
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

#7

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 05 juni 2008 - 21:51

Zal ik doen Bedankt voor je antwoord.

#8

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 06 juni 2008 - 08:12

Misschien helpt het volgende:

Matrix(Vector met indices van rijen, Vector met indices van kolommen)

Volgens mij is het eerste dat belangrijk is om je te realiseren, is dat matlab/octave voornamelijk met matrices werkt. Op het moment dat jij dus denkt met scalairen te werken, werk je al met een matrix.
A(i,j) = A([i],[j])
De reden dat je scalairen kan gebruiken is omdat matlab/octave deze intern naar de juiste syntax omzet. Een zelfde vorm van 'syntactic sugar' is de ':'. Deze wordt intern omgezet naar een vector met alle indices.
De notatie van het volgende betekent dus:
LaTeX
Als laatste is matlab/octave zo lief dat je op deze manier ook waarden mag toewijzen. Het volgende:
A([i j],:) = A([j i],:)
betekent dus:
LaTeX
waarbij elke waarde aan de rechterkant gezet wordt in de linkerkant op dezelfde plek.

#9

Bert F

    Bert F


  • >1k berichten
  • 2588 berichten
  • Ervaren gebruiker

Geplaatst op 07 juni 2008 - 22:33

toch wel een krachtige programmeer taal. Bedankt voor je reactie.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures