Matlab twee rijen verwisselen.
-
- Berichten: 2.589
Matlab twee rijen verwisselen.
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(,: )=A([j i],: ) Maar waarom werkt dit? maw wat doe je eigenlijk? Groeten.
Stel A is de betreffende matrix dan verwissel je de i en j de rij: A(,: )=A([j i],: ) Maar waarom werkt dit? maw wat doe je eigenlijk? Groeten.
- Berichten: 24.578
Re: Matlab twee rijen verwisselen.
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)
-
- Berichten: 2.589
Re: Matlab twee rijen verwisselen.
ik dacht dat je twee scalairen moest geven aan A is een scalair?
- Berichten: 24.578
Re: Matlab twee rijen verwisselen.
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.
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)
-
- Berichten: 2.589
Re: Matlab twee rijen verwisselen.
Ik blijf het raar vinden maar het werkt dus zullen we dat zomaar gebruiken. Groeten.
- Berichten: 24.578
Re: Matlab twee rijen verwisselen.
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)
-
- Berichten: 7.068
Re: Matlab twee rijen verwisselen.
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.
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:
betekent dus:
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.
Code: Selecteer alles
A(i,j) = A([i],[j])
De notatie van het volgende betekent dus:
\(A([i, j],: ) = \left[ \begin{array}{c} A(i,: ) \\ A(j,: ) \end{array} \right] = \left[ \begin{array}{cccc} A(i, 1 ) & A(i, 2 ) & \cdots & A(i, N) \\ A(j, 1 ) & A(j, 2 ) & \cdots & A(j, N) \end{array} \right]\)
Als laatste is matlab/octave zo lief dat je op deze manier ook waarden mag toewijzen. Het volgende:Code: Selecteer alles
A([i j],:) = A([j i],:)
\(\left[ \begin{array}{cccc} A(i, 1 ) & A(i, 2 ) & \cdots & A(i, N) \\ A(j, 1 ) & A(j, 2 ) & \cdots & A(j, N) \end{array} \right] = \left[ \begin{array}{cccc} A(j, 1 ) & A(j, 2 ) & \cdots & A(j, N) \\ A(i, 1 ) & A(i, 2 ) & \cdots & A(i, N) \end{array} \right]\)
waarbij elke waarde aan de rechterkant gezet wordt in de linkerkant op dezelfde plek.-
- Berichten: 2.589
Re: Matlab twee rijen verwisselen.
toch wel een krachtige programmeer taal. Bedankt voor je reactie.