|
|
While schleife und ein paar andere Sachen... |
|
Gast2412 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2011, 20:27
Titel: While schleife und ein paar andere Sachen...
|
 |
|
 |
|
Hallo ich schreibe bald eine Prüfung über matlab bin noch recht am Anfang meiner Lernphase aber habe schon einige fragen.
1.
Wie der Titel schon sagt geht es um while schleifen. ich hab hier ein kleiner programm
So meine frage hierzu: Mir ist klar das die Schleife durchlaufen wird solange i kleiner 5 ist und mit jedem mal wird i um 1 erhöht also nach 4 Durchläufen ist i=5 und somit die Schleife auch zu ende. Wie man sehen kann wird Summe=0 zugewiesen. Mich wundert es nur warum dann in der Schleife Summe auch jeweils um 1 erhöht wird und am Ende 10 ergibt, weil eigentlich müsste Summe ja wie gesagt 0 bleiben und 5 dazu addiert werden aber bei mir werden 10 angezeigt was wahrscheinlich heißt, dass es sich selber um 1 jeweils erhöht hat und die 5 sich dazu addiert hat.
Nun zur meiner 2. Frage: ich habe hier eine Aufgabe aus einer alten Prüfung:
Klammern Sie den Ausdruck x >= y > z entsprechend der Auswertungsregeln
(Reihenfolge) von Matlab
Diese Auswertungsregel kenne ich nicht und finde auch lieder nichts im Internet.
Meine Letzte Frage:
Auch ein Auszug aus der alten Prüfung:
Es sei V = [1.1,2.2,3.3], W = [3,2,1].
Welche der folgenden Ausdrücke sind ohne Fehlermeldung gültig?
W(floor(V(3)) V(W(1))
V(W(V(1))) W(abs(V(3)))
ok also was ich hier nicht genau verstanden habe ist die Schreibweise
w(v) zum Beispiel wie wird das gelesen w von v? und genauer gesagt was soll es bedeuten und was passiert da. ich weiß nur wenn ich w(3) schreibe wird mir die 3. Zahl im Vektor angezeigt also in diesem Fall die 1.
Naja das sind so meine Probleme im moment. Ich würde mich freuen wenn mir jemand helfen kann. Entschuldigt Tippfehler.
mfg
|
|
|
|
|
Scriptor |

Forum-Century
|
 |
Beiträge: 217
|
 |
|
 |
Anmeldedatum: 22.02.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2011, 21:01
Titel:
|
 |
Servus:
Frage 1:
Mit jedem Schleifendurchlauf erhöht sich dein i um eins. Du startest bei i = 1. und wird nicht mehr durchlaufen wenn du auf 5 inkrementiert hast. Das heißt du hast Durchläufe bei i = 1,2,3,4. Jedesmal haust du dein i auf die Summe. Dadurch entsteht SUmme_end = 1 + 2 + 3 + 4 = 10;
Frage 2:
Diese Regelung zeigt, welche Werte eines Arrays du haben willst.
du willst die Werte y eines fiktiven Vectors nennen wir ihn vec haben. Diese Werte befinden sich zwischen zwei Schwellwerte oben x und unten z.
Ich löse dass immer so:
y = vec(find(vec <= x && vec > z));
Was das mit Klammern soll weiß ich nicht so ganz.
Frage 3:
floor rundet gegen - unendlich
Indizierung geht immer Nur mit natürlichen Zahlen größer 0!!
abs bildet immer nur den Betrag einer Zahl
verschachtelte Indizierung geht immer von innen nach außen.
Ich denke das reicht erstmal als Tipps
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.01.2011, 21:25
Titel: Re: While schleife und ein paar andere Sachen...
|
 |
|
 |
|
Hallo Gast,
Zitat: |
So meine frage hierzu: Mir ist klar das die Schleife durchlaufen wird solange i kleiner 5 ist und mit jedem mal wird i um 1 erhöht also nach 4 Durchläufen ist i=5 und somit die Schleife auch zu ende. Wie man sehen kann wird Summe=0 zugewiesen. Mich wundert es nur warum dann in der Schleife Summe auch jeweils um 1 erhöht wird und am Ende 10 ergibt, ... |
Nein. Im ersten Durchlauf wird 1 zu Summe addiert, im zweiten 2, im dirtten 3 etc. Die Zahlen werden alle per DISP ins CommandWindow geschrieben, also bitte lies dort einfach mal nach, was genau passiert.
Zitat: |
Klammern Sie den Ausdruck x >= y > z entsprechend der Auswertungsregeln (Reihenfolge) von Matlab |
Ach herrje! Das ist eine tückische Frage. Ich würde jedem Matlab-Programmierer, der sich hier auf eine spezielle Reigenfolge der Auswertung verlässt, für tapfer bis fahrlässig halten.
Kann jemand hier -ohne Ausprobieren- mit Sicherheit sagen, was das Ergebnis von "4 >= 5 > 6" ist?!
Also in Matlab passiert dies:
Die Regel dazu läßt sich in der Tat nicht leicht finden:
1. "help precedence"
2. Von Links nach rechts auswerten.
Zitat: |
also was ich hier nicht genau verstanden habe ist die Schreibweise w(v) zum Beispiel wie wird das gelesen w von v? und genauer gesagt was soll es bedeuten und was passiert da. ich weiß nur wenn ich w(3) schreibe wird mir die 3. Zahl im Vektor angezeigt also in diesem Fall die 1. |
Das ist doch bereits die Antwort! w(3) ist das dritte Element von w. w([3,4]) ist ein 1x2 Vektor aus dem 3. und 4. Element von w. w(v) ist der Vektor: [w(v(1)), w(v(2)), ... w(v(end))]
Lies mal das Kapitel "Getting Started" in der Dokumentation! Sehr hilfreich für soclhe Fragen.
@Scriptor:
Es is effizienter, hier das FIND einfach wegzulassen => logical indexing. Die Frage des OPs bezog sich aber auf die Precedence, also die Reihenfolge der Auswertung.
Gruß, Jan
|
|
|
Gast2412 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2011, 22:02
Titel:
|
 |
Erst einmal Danke für die schellen Antworten. Meine erste Frage hab ich jetzt verstanden und ist sehr logisch.
Frage 2 ist auch verständlich wenn man Zahlen einsetzt.
Aber bei der dritten hab ich immer noch Schwierigkeiten.
w(3) ist also das 3. Element im Vektor w. Soweit komm ich mit wenn der Vektor w z.b. so aussieht [2,3,4] wäre jetzt w(3) die 4. aber nochmal V betrachtet v(1) ist ja 1.1 und dann wäre w(v(1))= w(1.1). hm ich tus mir sehr schwer bei diesen verschachtelungen:/ habe es glaube ich nicht ganz verstanden und bei V(W(V(1))) geht bei mir garnichts mehr. ich geh von der innersten klammer bis zur äusersten aber komme nicht auf das richtige Ergebnis.
Dieses "getting started" ist auf englisch auf http://www.mathworks.de oder? englisch ist leider nicht meine stärke:(
mfg
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.01.2011, 23:13
Titel:
|
 |
Hallo Gast,
Zitat: |
v(1) ist ja 1.1 und dann wäre w(v(1))= w(1.1). |
Genau. Und da der Index ganzzahlig und größer als Null sein muss, wird w(v(1)) eine Fehlermeldung erzeugen.
Zitat: |
Dieses "getting started" ist auf englisch auf http://www.mathworks.de oder? englisch ist leider nicht meine stärke:( |
Die Getting-Started-Kapitel findest Du in jeder Matlab-Installation auch lokal auf Deinem Rechner: "doc" -> Matlab -> Getting Started.
Ohne Englisch-Kenntnisse ist das allerdings schwierig. Deshalb würde ich Dir folgende Prioritäten empfehlen:
1. Englisch lernen.
2. Matlab lernen.
Ich meine das schon ernst. Ich hätte keine Ahnung, wie ich Matlab ohne HELP Texte, die DOC Texte, die Kommentare in den M-Files der Toolboxen und die Englisch-sprachigen CSSM Newsgroup hätte lernen können.
Gruß, Jan
|
|
|
|
|
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 - 2025
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.
|
|