Hallo, kann mir jemand sagen, wie in folgender Anweisung (MATLAB) die Schritte berechnet werden, so dass die "ausgabe" heraus kommt? ausgabe = [1 1]; for k = 1:10 ausgabe = [ausgabe ausgabe(k)+ausgabe(k+1)]; end ausgabe Ausgabe: ausgabe = 1 1 2 3 5 8 13 21 34 55 89 144
bei der vorlesung/im unterricht geschlafen? felltoelpel schrieb: > ausgabe = [1 1]; > for k = 1:10 > ausgabe = [ausgabe ausgabe(k)+ausgabe(k+1)]; tipp: for arbeitet ein bsteimmten anweisungsblock mehrfach ab, der zugriff auf komponenten eines vektors (einer matrix) erfolgt in matlab mit runden klammern (z.b. a(1,1))
hier wird der ausgabevektor initialisiert
1 | ausgabe = [1 1]; |
hier wird eine for-schleife 10x durchlaufen mit dem index k
1 | for k = 1:10 |
hierbei passiert jetzt ein wenig "böses zeug" (matlab wird dir wahrscheinlich die fehlermeldung ausgeben "preallocation is recommended for speed"). der vektor ausgabe wird mit einem neuen vektor überschrieben, dieser besteht aus den elementen des "alten" vektors ausgabe und dem neuen element "ausgabe(k)+ausgabe(k+1)" - das ist ein sprachkonstrukt, welches man wirklich nicht verwernden sollte, da jedesmal neuer speicher alloziert und wieder freigegeben werden muss...macht man sowas öfter und wird das program größer kann der code EXTREM langsam werden..
1 | ausgabe = [ausgabe ausgabe(k)+ausgabe(k+1)]; |
hier endet die for schleife
1 | end |
ok, so weit so gut, die for Schleife ist mir klar, nur frage ich mich wie die Elemente zustande kommen. ausgabe = 1 1 2 3 5 8 13 21 34 55 89 144 Was passiert im ersten bzw. zweiten for Durchlauf u.s.w.? ausgabe = [ausgabe ausgabe(k)+ausgabe(k+1)];
felltoelpel schrieb: > Was passiert im ersten bzw. zweiten for Durchlauf u.s.w.? > > ausgabe = [ausgabe ausgabe(k)+ausgabe(k+1)]; hab ich doch oben geschrieben... überschreibt die variable ausgabe
1 | "ausgabe =" |
mit dem neuen element
1 | [ausgabe ausgabe(k)+ausgabe(k+1)] |
dieses element ist ein kombinierter vektor aus dem alten vektor "ausgabe" und dem neuen element "ausgabe(k)+ausgabe(k+1)" welches hinten angehängt wird... was jetzt ausgabe(k) ist darfst du dir wirklich mal selber überlegen ;)
:
Bearbeitet durch User
Wenn ich so ein Problem habe, dann probiere ich beispielsweise mal aus, die Schleife Schritt für Schritt mit dem Debugger laufen zu lassen. Dann sieht man doch auf Anhieb was passiert. Falls Du kein Matlab hast, okay; falls doch, wie wäre es mit ein wenig mehr Eigeninitiative? Ohne sich die Mühe zu machen solche Grundlegenden Sachen selber herauszufinden kommt man bei der Programmierung nicht weit. LG Max
felltoelpel schrieb:
1 1 2 3 5 8 13 21 34 55 89 144
1+1 =2
1+2= 3
2+3= 5
3+ 5 = 8
.
.
.
55+89=144
Ist irgendeine mathematische Operation mit der sich die Elemente
berechnen lassen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.