|
|
nxn-Matrix zu (n^2)x3-Matrix umwandeln |
|
werne_47 |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 02.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 10:24
Titel: nxn-Matrix zu (n^2)x3-Matrix umwandeln
|
 |
Hallo,
ich habe wohl ein Verständnisproblem mit den for-Schleifen in Matlab. Ich habe eine nxn-Matrix, die die z-Koordinate eines Rechengitters beschreibt. Als Input für ein externes Programm brauche ich dieses Rechengitter jedoch als Punkteliste, also im Format (X-Koordinate, Y-Koordinate, Z-Koordinate).
Ich möchte die einzelnen Werte der Matrix nun nacheinander auslesen (erst alle Spalten der ersten Zeile, dann alle Spalten der zweiten Zeile etc.) und in eine neue Matrix übertragen.
Mein Ansatz war eine verschachtelte For-Schleife:
Ich hatte erwartet, dass Matlab nun zuerst i=1 setzt und dann j komplett hochzählt, dann i=2 setzt etc. Allerdings scheint das so nicht zu funktionieren, anstatt einer (n^2)x3-Matrix bekomme ich nur eine (n+n-1)x3-Matrix. Wo ist mein Fehler?
|
|
|
|
|
ro_mat |

Forum-Century
|
 |
Beiträge: 158
|
 |
|
 |
Anmeldedatum: 20.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 11:16
Titel:
|
 |
Hallo,
sehe ich das aus deinem Code richtig dass du:
Alle Werte aus xnodes in die erste Spalte von Punkteliste schreiben willst,
alle Werte aus ynodes in die zweite Spalte von ... ,
alle Werte aus Rechengitter in die dritte Spalte ... .
Vielleicht kannst du exemplarisch aufführen was in xnodes, ynodes, Rechengitter steht und wie diese Daten in Punkteliste dargestellt werden sollen (anhand von Beipielzahlen)!
Lg Rob
|
|
|
Friidayy |

Forum-Century
|
 |
Beiträge: 225
|
 |
|
 |
Anmeldedatum: 17.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 11:35
Titel:
|
 |
|
|
werne_47 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 02.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 11:48
Titel:
|
 |
|
 |
|
ro_mat hat Folgendes geschrieben: |
Hallo,
sehe ich das aus deinem Code richtig dass du:
Alle Werte aus xnodes in die erste Spalte von Punkteliste schreiben willst,
alle Werte aus ynodes in die zweite Spalte von ... ,
alle Werte aus Rechengitter in die dritte Spalte ... .
Vielleicht kannst du exemplarisch aufführen was in xnodes, ynodes, Rechengitter steht und wie diese Daten in Punkteliste dargestellt werden sollen (anhand von Beipielzahlen)!
Lg Rob |
Genau so hatte ich mir das gedacht.
xnodes enthält die X-Koordinaten meiner Rechenknoten: xnodes = (x1 x2 x3 x4 ... xn)
ynodes enthält die Y-Koordinaten der Rechenknoten: ynodes = (y1 y2 y3 y4 ... yn)
Rechengitter enthält die Z-Koordinaten der Rechenknoten.
(z11 z12 z13 z14 ... z1n)
(z21 z22 z23 z24 ... z2n)
(z31 z32 z33 z34 ... z3n)
:
:
:
(zn1 zn2 zn3 zn4 ... znn)
In der gewünschten Matrix soll das ganze dann so ungefähr aussehen:
(x1 y1 z11)
(x1 y2 z12)
(x1 y3 z13)
:
:
:
(x2 y1 z21)
(x2 y2 z22)
....
Der Reshape-Befehl sieht aber auch schon einmal ziemlich gut aus, ich muss ihn mal ausprobieren um zu sehen, ob das so funktioniert.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 11:54
Titel: Re: nxn-Matrix zu (n^2)x3-Matrix umwandeln
|
 |
Hallo Werne_47,
Die Frage ist noch nicht klar genug. Für Dich liegt es zwar auf der Hand, aber die Leser wüssen schon raten was das genau bedeutet:
Zitat: |
Format (X-Koordinate, Y-Koordinate, Z-Koordinate). |
Deine FOR-Schlöeife tut genau das, was Du möchtest. Aber Die Zuweisung der Variablen PunkteListe stimmt nicht.
Mit dem Debugger bekommt man in solchen Fällen heraus, was passiert. Setze einen Breakpoint in die FOR-Schleife und gehe Zeile für Zeile durch Dein Programm. Dann wird Dir auffallen, dass Elemente von PunkteListe überschrieben werden.
Wahrscheinlich möchtest Du:
Gruß, Jan
|
|
|
werne_47 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 02.02.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2016, 15:43
Titel:
|
 |
So, ich habe meinen Fehler gefunden. Danke für den Tipp mit dem Breakpoint. Das Problem war, dass durch meine (i+j-1)-Konstruktion die ersten Zeilen der Matrix natürlich jedes Mal überschrieben wurden, sobald j wieder auf j=1 gesetzt wurde. Das Problem konnte ich durch die Einführung eines größeren Zeitschrittes (in Verbindung mit der Aufrundung der Zählvariablen) lösen, und habe jetzt folgende Schleife erstellt (falls noch jemand später dieses Problem haben sollte):
Gruß,
Michael
|
|
|
|
|
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.
|
|