|
|
unregelmäßige for schleife (aus vektor) |
|
Olsen |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 15.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.09.2010, 18:38
Titel: unregelmäßige for schleife (aus vektor)
|
 |
Hallo Leute,
das mit gomatlab ist ein Tip von einer Kollegin und vielleicht könnt ihr ja helfen. Um mein Problem darzustellen, kopiere ich hier gleich mal ein hoffentlich anschauliches und einfaches Beispiel rein.
% so wie die Matrix aussieht sollte auch das Ergebnis der folgenden Schleife aussehen. Tut es so aber leider nicht
% die Frage ist, wie definiere ich die Laufvariable(n) um auf ein Ergebnis wie in Yr1 zu kommen? Folgender Ansatz funktioniert nicht
% Hoffe, das ist verständlich. Ich möchte also in Matritzen, auf unregelmäßigen Abschnitten Berechnungen durchführen. Die Matritzen sind recht groß, die Bereichgrenzen jedoch bekannt. Daher möchte ich das mit einer Schleife lösen, anstatt die Bereiche manuell zuzuweisen. Kann jmd. helfen? Danke, Olsen
edit by denny: Bitte für Code Codeumgebung verwenden. Danke!
|
|
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 15.09.2010, 19:54
Titel:
|
 |
Hallo,
1. Bitte darauf achten deinen Beispielcode in der Codeumgebung zu posten. Dies funktioniert mit dem Code Button bei der Posterstellung.
Nun zu deinem Problem. Ich haette 2 Loesungsvorschlaege:
1. der sehr simple:
2. den ich bevorzuge, da du nicht noch extra den Vektor mit den Startwerten erzeugen musst:
Sicher gibt es auch noch einen eleganteren Weg, der mir gerade aber leider auch nicht einfaellt .
MFG
Sco
|
|
|
Olsen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 15.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.09.2010, 22:34
Titel:
|
 |
Danke,
funktioniert auf jeden Fall beides.
werde mal gucken ob ich das auf meinen "echten" Fall angewendet bekomme.
Das mit dem code-button hatte ich nicht gesehen. Beim nächsten Mal weiß ich Bescheid.
Grüße
|
|
|
Olsen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 15.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.09.2010, 09:26
Titel:
|
 |
Ok, leider habe ich ein Brett vor dem Kopf.
Bleiben wir mal beim Beispiel.
Wenn ich nun Berechnungen jeweils von start1 bis stop1, start2 bis stop2 usw. durchführen möchte, also beispielsweise summieren. Wie passe ich das an? Sorry, aber ich bin wohl sowas wie ein unkreativer Anfänger.
gewünscht wäre also ein Ergebnis wie:
aber eben nicht manuell sondern mit der Schleife basierend auf den Start-Stop Werten. Nochmals Vielen Dank
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 16.09.2010, 13:10
Titel:
|
 |
Hallo.
na das ist doch kein Problem .
MFG
|
|
|
Olsen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 15.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.09.2010, 13:47
Titel:
|
 |
Genial. Zugegebenermaßen, für mich auch etwas unangenehm.
Ich meine ich hätte das letzte Nacht noch so probiert. Na wahrscheinlich hatte ich die Zeile in der for Schleife mit:
begonnen. Aber das ist ja wohl was völlig anderes als M(k)=...
Danke sehr.
Mit besten Grüßen
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 16.09.2010, 21:19
Titel:
|
 |
Hallo Olsen, hallo Sco,
Da sowieso über alle Spalten addiert wird, kann man das schbeller ausserhalb der Schleife machen:
Wenn man aber nur noch einen Vektor summiert, kann man das auch ohne Schleife mit ACCUMARRAY erreichen:
Gruß, Jan
|
|
|
Olsen |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 15.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.09.2010, 08:53
Titel:
|
 |
Hi Jan,
ist wahrscheinlich eine coole Idee. Kann aber nicht testen. Sitze gerade an Matlab v6.5 und das scheint accumarray nicht zu kennen
Dank dir.
Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 17.09.2010, 12:51
Titel:
|
 |
Hallo Olsen,
Ja, mit Matlab 6.5 geht das nicht.
Mein Code hat noch einen Tippfehler: Ein SUM ist überflüssig:
Eine andere schnelle Methode wäre CUMSUM direkt auf VEC1 anzuwenden:
Hier ist aber eine gewisse Vorsicht notwendig: CUMSUM kann einen Überlauf produzieren und Rundungsfehler bewirken. Wenn alles Integer-Zahlen sind, ist das harmloser. Leider läuft CUMSUM und DIFF nicht mit INTs.
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.
|
|