|
|
Hilfe bei if/for Schleife |
|
fun123abc |
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 25.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.07.2020, 08:54
Titel: Hilfe bei if/for Schleife
|
|
Hallo zusammen,
ich stehe aktuell vor einer kleinen Herausforderung mit einer Schleife.
Ich habe einen 3D Plot und möchte Zeilen bzw Spalten von Matrizen löschen, um das ganze etwas zu verschieben in X bzw Y Richtung.
X und Y sind Werte von 1-256. Um Zeilen bzw. Spalten zu löschen habe ich den folgenden Code:
Wenn ich den 3D Plot jetzt zum Beispiel um Y = 2 verschieben möchte, dann würe ich folgendes machen:
Also zwei mal das ganze in Y-Richtung durchlaufen. Ich würde das gerne automatisieren. D.h. das Programm soll das mit einer Schleife automatisch 2 mal durchlaufen. Leider komme ich hier nicht weiter.
Ich habe mir folgendes überlegt, was leider nicht funktioniert:
Er soll in jedem Durchlauf eine Zeile bzw. Spalte löschen. D.h. bei n = 2 soll er im ersten Durchlauf 256 löschen, im zweiten Durchlauf 255. Der aktuelle Code funktioniert leider noch nicht, ich stehe etwas auf dem Schlauch
|
|
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.07.2020, 09:38
Titel:
|
|
Du hast bestimmt if mit for verwechselt IF steht für FALLS und führt Code ein mal aus falls die Bedingung erfüllt ist, leitet aber keine Schleife ein. Dafür brauchst du FOR
Eine Schleife ist hier aber nicht die optimale Lösung, da die Matrizen in jedem Schleifendurchlauf ihre Größe ändern. Das wird bei vielen Schleifendurchläufen und großen Matrizen langsam. Besser ist hier eine Vektorisierung
|
|
|
fun123abc |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 13
|
|
|
|
Anmeldedatum: 25.04.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.07.2020, 10:21
Titel:
|
|
Hallo, vielen Dank für deine Hilfe! Du hast natürlich recht, mit der for Schleife lässt sich das besser lösen. Ich wollte mit der if Schleife zunächst einmal abfragen, ob die X- bzw. Y Verschiebung überhaupt größer als 0 ist und die Schleife damit durchlaufen werden muss, aber das wird ja bereits durch die for Schleife erledigt. Ich habe es nun etwas abgeändert:
Wenn ich das richtig verstanden habe, sollte er falls n = 0 oder u = 0 sind die Schleife ja gar nicht durchlaufen. D.h. in diesem Beispiel müsste er lediglich letztere Schleife durchlaufen, oder?
Noch eine Frage zu der Schleife: Ich möchte damit beginnen, die 256. Zeile/Spalte zu löschen. Lautet die Schleife allerdings wie jetzt, 256-n+1, dann beginne ich ja nicht bei 256, sondern lösche 255 und anschließend 254. Oder habe ich da einen Denkfehler? Müsste es nicht heißen for i = =0:n-1 ?
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.07.2020, 10:33
Titel:
|
|
Zitat: |
Wenn ich das richtig verstanden habe, sollte er falls n = 0 oder u = 0 sind die Schleife ja gar nicht durchlaufen. D.h. in diesem Beispiel müsste er lediglich letztere Schleife durchlaufen, oder? |
Richtig, probier es einfach aus, dann siehst du ja sofort welche Schleife durchlaufen wird
Zitat: |
Noch eine Frage zu der Schleife: Ich möchte damit beginnen, die 256. Zeile/Spalte zu löschen. Lautet die Schleife allerdings wie jetzt, 256-n+1, dann beginne ich ja nicht bei 256, sondern lösche 255 und anschließend 254. Oder habe ich da einen Denkfehler? Müsste es nicht heißen for i = =0:n-1 ? |
Bei n=1: 256-n+1=256
Bei n=2: 256-n+1=255
Deine Variante mit i=0:n-1 geht nat. auch, dann fällt die + 1 weg. Ist vielleicht intuitiver.
|
|
|
|
|
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.
|
|