|
|
Dynamische Schleifenprogrammierung |
|
Slamdunker23 |

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 11:06
Titel: Dynamische Schleifenprogrammierung
|
 |
Hallo zusammen,
ich habe ein Frage bezüglich einer dynamischen Schleifenprogrammierung. Im Folgenden findet ihr einen einfachen Quellcode, der das Thema widerspiegelt:
Die Schleife zählt die Zeilen der Matrix durch. Innerhalb der Schleife wird eine Zeile der Matrix gelöscht. Da der Endwert der Schleifendurchzählung zu Beginn fix ist, kommt eine Fehlermeldung, da am Ende (bei diesem Beispiel) eine Zeile fehlt!
Wie kann ich sozusagen den Endwert der Schleifendurchzählung dynamisch an die Ausführungen innerhalb der Schleife knüpfen?
Vielen Dank für eure Hilfe!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 11:20
Titel:
|
 |
Hallo,
eine Möglichkeit wäre, die Schleife rückwärts laufen zu lassen.
Es geht jedoch viel einfacher und schneller:
(Stichwort: logical indexing)
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 12:15
Titel:
|
 |
Logical Indexing ist eine sehr gute Hilfe, aber ich weiß nicht, ob sie bei meinem Problem hilft.
Bei der vorhin geposteten logischen Operation klappt das.
Wie kann ich das damit aber umsetzen, wenn ich eine Matrix durchsuchen will, ob die jeweiligen Zeilenelemente der ersten Spalte gleich sind wie das darauffolgende Zeilenelement der ersten Spalte.
Falls dies der Fall ist, soll die darauffolgende Zeile gelöscht werden.
Das bedeutet, die logische Operation ist nicht nur ein Vergleich, sie bezieht auch noch die darauffolgende Zeile mit ein.
Geht dies ebenfalls mit dem Logical Indexing?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 12:19
Titel:
|
 |
Hallo,
diff berechnet den Unterschied aufeinanderfolgender Elemente.
== 0 testet, ob der Unterschied 0 ist, die Elemente also gleich sind.
Das vorangestellte false sorgt dafür, dass die erste Zeile nicht gelöscht wird.
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 12:44
Titel:
|
 |
Mit meiner Anfangsmatrix A und deinem Code bekomme ich eine Fehlermeldung, bzgl positiven und logischen Indizes.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 13:12
Titel:
|
 |
Hallo,
bitte die genaue Fehlermeldung und möglichst eine (kleine) Matrix, bei der das Problem auftritt, posten.
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 14:04
Titel:
|
 |
A = [0 1; 2 3; 4 5; 6 7; 8 9];
Das ist die Matrix und das die Fehlermeldung:
??? Subscript indices must either be real positive integers or logicals.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 14:55
Titel:
|
 |
Hallo,
bei mir läuft dieser Code. Meine Vermutung ist, dass noch irgendwelche andre Sachen im Workspace liegen, die hier Probleme verursachen.
Also mal alle Daten speichern, dann
und dann nochmal versuchen.
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 15:09
Titel:
|
 |
Danke dir, es funktioniert!
Ich habe Matlab-Hilfe zur Matrix Indexing gelesen, unter Anderem auch das topic über das logical indexing.
Wenn ich das richtig verstehe, soll dadurch die Skripte einfacher gemacht werden, das bedeutet so wie in meinem Fall, dass die Schleife durch gerade dieses indexing ersetzt wird?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 15:24
Titel:
|
 |
Hallo,
die Skripte (oder Funktionen) werden dadurch kürzer, oft lesbarer, und vor allem sehr oft auch effizienter.
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 16:17
Titel:
|
 |
Danke für deine Hilfe!
Mal abgesehen von dem logical indexing, wie würde es aussehen die Schleife aus Post#1 rückwärts zählen zu lassen und wie würde das meinem Problem ebenfalls helfen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 16:35
Titel:
|
 |
Hallo,
Bei deiner Variante war ja das Problem, dass von 10 Zeilen beispielsweise die 5. herausgelöscht wird; die letzte Zeile ist dann die 9. Wenn du die Schleife rückwärts laufen lässt, ist das egal, weil du ja nur vorherige Zeilen brauchst.
Grüße,
Harald
|
|
|
Slamdunker23 |
Themenstarter

Forum-Century
|
 |
Beiträge: 101
|
 |
|
 |
Anmeldedatum: 03.11.09
|
 |
|
 |
Wohnort: Stuttgart
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 11.01.2012, 16:38
Titel:
|
 |
|
|
|
|
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.
|
|