|
|
Folge als Vektor ausgeben |
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.10.2016, 23:11
Titel: Folge als Vektor ausgeben
|
|
Guten Abend,
ich habe seit kurzem angefangen Matlab zu lernen und komme bei einer Aufgabe seit Stunden mehr nicht weiter.
Und zwar soll ich eine Funktion schreiben die eine rekursive Folge mit Startwerten x1=a, x2=b und xn=xn-1+xn-2 ,n>=3 berechnet und dann als Vektor mir x=(x1,x2,x3,.....,xn) ausgibt.
Angenommen man setzt für a=1 , b=1 und n=10 ein sollen die ersten 10 Stellen der Fibonacci als Vektor ausgegeben werden.
Das Problem ist, dass ich es nur hinkriege, dass die letzt Zahl ausgegeben wird, also in meinem Beispiel nur x=55 und nicht der Vektor x= 1 1 2 3 5 8 13 21 34 55
Über eine Lösung des Problems wäre ich sehr dankbar!
|
|
|
|
|
vega1013 |
Forum-Century
|
|
Beiträge: 162
|
|
|
|
Anmeldedatum: 26.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.10.2016, 14:18
Titel:
|
|
Hallo,
wie wäre es mit einer for schleife die von 1 bis n hochzählt?
x must du dann mit x(i)=... indizieren...
Gruß vega
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.10.2016, 15:29
Titel:
|
|
Hallo,
um redundante Berechnungen zu vermeiden, sollte auch das gehen:
Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.10.2016, 19:54
Titel:
|
|
Vielen Dank erstmal für die Hilfe!
@Harald:
Ich bekomme da die Fehler: Matrix dimensions must agree Error in A (line7) und Error in A (line6)
@vega1013
Das hab ich sogar auch schon versucht, leider auch ohne Erfolg. Dies sollte zur Lösung führen, weil wir es in der Vorlesung einmal kurz angeschnitten hatten.
Mein Versuch:
Error: File: A.m Line: 2 Column: 6
Unbalance or unexpected paranthesis or bracket.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 29.10.2016, 21:50
Titel:
|
|
Hallo,
habe gerade MATLAB nicht zur Hand. Die Idee ist, dass du dir immer das Element und das vorherige zurückgeben lässt.
Was den anderen Vorschlag angeht: schau dir nochmal die Syntax von for-Schleifen an. Du möchtest
Dann solltest du die rechten Seiten der Zuweisungen aber auch von i abhängig machen statt von n.
Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.10.2016, 00:01
Titel:
|
|
Syntax für for-Schleifen:
for index = values
statements
end
Entschuldige, dass ich so wenig bis keine Ahnung von der Materie habe. Arbeite erst seit einer Woche mit Matlab und lese/probiere täglich ca. 4h um damit klar zu kommen, aber ich hab vorher noch nie mit sowas gearbeitet, deswegen fällt mir das recht schwer.
Neuer Versuch:
In an assignment A( =B, the number of elements in A and B must be the same.
Error in A (line 7)
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.10.2016, 00:02
Titel:
|
|
Der Smiley im letzten Absatz soll ein ( : ) ohne Leerzeichen sein.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.10.2016, 10:39
Titel:
|
|
Hallo,
ist auch ein Problem, bei dem man schnell einen Knoten im Hirn bekommt.
Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.10.2016, 12:57
Titel:
|
|
Das ist fast genau das, was ich brauche. Nur der Ergebnisvektor wird falsch herum ausgegeben.
Vielen vielen Dank für die Hilfe!!!
Ich versuche das heute Abend selbst nachzuvollziehen und das letzte bisschen zu lösen und melde mich sonst nochmal, falls ich es nicht selbst hin bekomme.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.10.2016, 20:48
Titel:
|
|
Hallo,
Zitat: |
Nur der Ergebnisvektor wird falsch herum ausgegeben. |
Da sehe ich zwei Möglichkeiten:
a) fliplr
b) an den beiden Stellen im Code, an denen Sachen aneinandergehängt werden, die Reihenfolge vertauschen.
Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.11.2016, 19:13
Titel:
|
|
Auf die beiden Möglichkeiten bin ich beim recherchieren auch gekommen, aber die Umsetzung ist mal wieder naja
a)
x=A(1,2,5)
ans =
1 2
ans =
1 2 3
ans =
1 2 3 5
ans =
1 2 3 5 8
x =
8 5 3 2 1
Man sollte da nur die vorletzte Zeile wo ans = 1 2 3 5 8 steht, aber mit x= 1 2 3 5 8
b)
x=C(1,2,5)
x =
1 2 3 3 3
Hab auch viele weitere Versuche gemacht, aber diese beiden kommen der Lösung am nächsten.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.11.2016, 19:18
Titel:
|
|
Hallo,
du musst das Ergebnis von fliplr einer Variablen zuweisen (wie es auch in jedem Beispiel der Doku zum Befehl geschieht).
Schon sind die ganzen ans = weg.
Grüße,
Harald
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.11.2016, 20:43
Titel:
|
|
Irgendwas geht noch nicht ganz auf.
Ich bin am rumtesten ohne ende und komm da einfach nicht drauf -.-
Matlab zu lernen wird viel schwieriger als gedacht.
>> x=A(1,2,5)
x =
3 1 2 3 5
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 01.11.2016, 21:31
Titel:
|
|
Hallo,
a)
Auf Anhieb sehe ich schon mal das Problem, dass du immer noch b und a in der falschen Reihenfolge hast. Das könnte z.B. gelöst werden, indem du das fliplr aus der if-Anweisung herausziehst.
b)
Wenn du die Vektoren umdrehst, dann sind die Elemente n-1 und n-2 nicht mehr die ersten, sondern die letzten. Das musst du dann bei der Indizierung natürlich entsprechend berücksichtigen.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|