Forum: PC-Programmierung Matlab Vektorberechnung


von felltoelpel (Gast)


Lesenswert?

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

von Daniel F. (df311)


Lesenswert?

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

von TestX .. (xaos)


Lesenswert?

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

von felltoelpel (Gast)


Lesenswert?

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)];

von TestX .. (xaos)


Lesenswert?

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
von matlaber (Gast)


Lesenswert?

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

von Lutz H. (luhe)


Lesenswert?

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.

von Matlab (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.