Springen naar inhoud

For-lus matlab


  • Log in om te kunnen reageren

#1

mtlb

    mtlb


  • 0 - 25 berichten
  • 12 berichten
  • Gebruiker

Geplaatst op 29 april 2009 - 13:38

Ik heb een probleem bij het maken van mijn for-lus. Dit was de opdracht:

Schrijf een functie structuur die voor een gegeven (1 x n) vector v, met als elementen [v1 v2 ... vn], een matrix V maakt die als volgt gestructureerd is

v1 v2 v3 ... v(n-2) v(n-1) v(n)
-v2 v1 v2 v3 ... v(n-2) v(n-1)
V= -v3 -v2 v1 v2 v3 ... v(n-2)
... ... ... ... ... ... ...
-v(n-2) ... ... ... ... v2 v3
-v(n-1) -v(n-2) ... ... ... v1 v2
-v(n) -v(n-1) -v(n-2) ... -v3 -v2 v1


ē De elementen van de hoofddiagonaal zijn allen gelijk aan v1.
ē De elementen van diagonaal i in de bovendriehoek zijn allen gelijk
aan v(i+1), met 1 ≤ i ≤ n-1.
ē De elementen van diagonaal i in de benedendriehoek zijn allen
gelijk aan -vi+1, met 1 ≤ i ≤ n-1.

Nu is het dus de bedoeling om deze matrix V via twee for-lussen te maken zonder dat het commando diag erin voorkomt. Invoer is v en uitvoer is V.

Ik was al tot deze functie gekomen, maar die is alleen maar juist voor de hoofddiagonaal en de diagonaal daarboven en daaronder. Kan iemand mij aub zeggen wat ik moet veranderen opdat die voor alle diagonalen juist is??? Alvast bedankt!

function V=structuur(v)
n=length(v);
i=1:n;
v= v(i);
V(i,i)= v(1);
for i=1:(n-1)
for m=0:(i-1);
V(i,i+1)=v((i+1)-m);
V(i+1,i)=-v((i+1)-m);
end
end

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

#2

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 29 april 2009 - 19:08

Bekijk je for-loop nog eens goed. Om alle elementen goed te hebben. moet je met behulp van je twee for-loops ook alle elementen van je matrix doorlopen hebben.

Bekijk eerst eens een willekeurige rij k en probeer die te maken met 1 for-loop. Er zit namelijk een duidelijk verband tussen de vorm van de vector v en een willekeurige rij k in de matrix V. Vervolgens loop je alle rijen door met een tweede for-loop.

Uit je opdracht begrijp ik dat je het met 2 for-loops moet doen? Het kan namelijk ook met 1 for-loop en dat is vanuit Matlab perspectief beter.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures