|
|
Funktion für Datenpunkte aus CSV-Datei |
|
Lunatik42 |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 27.08.20
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: 2020a
|
|
|
|
|
|
Verfasst am: 27.08.2020, 21:09
Titel: Funktion für Datenpunkte aus CSV-Datei
|
|
|
|
|
Hallo liebes Forum,
ich bin ganz neu hier und versuche, es kurz zu machen. Ich soll im Rahmen meiner Masterarbeit ein MATLAB-Skript schreiben, welches Daten aus einer CSV-Datei als Grundlage/Input hat. Es geht da um feine Partikel, deren Ortskoordinaten fest stehen (also x,y,z). Diese Partikel sollen, je nachdem, ob sie benachbart sind oder nicht, mit Polymerbrücken verbunden werden, der Durchmesser der zylindrischen Brücken soll abhängig vom Abstand der Partikel sein.
Da es sich um bis zu 20.000 feine Partikel (d=40 Mikrometer), ist der Datensatz (aus einem anderen Simulationsprogramm exportiert) natürlich sehr groß und auch ungeordnet.
Das Skript soll also von jedem einzelnen Partikel über eine Abstandsfunktion ((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)) erstmal checken, welche Partikel überhaupt als benachbart gelten (also ein Mindest-und ein Maximalabstand) und mir dann einen Wert für den Brückendurchmesser ausgeben (die Formel dafür hätte ich schon parat).
Meine Frage jetzt: Hat irgendjemand eine grobe Idee, wie man da überhaupt anfängt?
Also von zb 10.000 Partikeln jeweils 3 Ortswerte irgendwie in eine Matrix zu packen und dann jedes Ortskoordinatenpaar mit jedem Ortskoordinatenpaar zu vergleichen.
Ich weiß, das ist alles recht viel, aber ich bin gerade echt ein bisschen aufgeschmissen und wäre für jede Form von Input unglaublich dankbar!
MfG
Lunatik
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2020, 21:18
Titel:
|
|
Hallo,
die Distanzmatrix für Vektoren x, y, z kannst du unter Verwendung von Implicit Expansion so ausrechnen:
Je nach Anzahl der Partikel kann der Speicherbedarf problematisch werden. Bei 20000 Partikeln sind es über 3 GB für die Matrix, und weiterverarbeiten willst du die Matrix vermutlich ja auch noch irgendwie.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Lunatik42 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 27.08.20
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: 2020a
|
|
|
|
|
|
Verfasst am: 27.08.2020, 21:36
Titel:
|
|
|
|
|
Wow, das geht ja fix hier!
Danke erstmal. Speicherplatz ist keine knappe Ressource bei uns, zumindest soweit ich das beurteilen kann.
Aber wie müsste ich denn ungefähr vorgehen, wenn die Partikel zb Nummern von 1 bis 10000 bekommen, also in der ersten Spalte zum Beispiel. In den folgenden 3 Spalten stehen jeweils die x,y,z-Koordinaten und dann soll Partikel 1 mit Partikel 2 verglichen werden, Partikel 1 mit Partikel 3.... Partikel 1 mit Partikel 10000, Partikel 2 mit Partikel 3 bis 10000. Das sind ja schon mal 50 Mio Vergleiche.
Das min-max Kriterium wird dazu führen, dass sich im Durchschnitt 6 Brücken zwischen einem Partikel und seinen Nachbarn ausbilden, das weiß ich schon aus dem Sim-Tool, mit dem ich eigentlich arbeite. Ich brauche nur noch so eine if else Schleife und dann zB 6 Werte als Ausgabe für jeden einzelnen Partikel, nach dem Prinzip: Partikel 1 ist verbunden mit Partikel 2,3,4,5,6,7 mit den Brückendurchmessern d2,d3,d4,d5,d6,d7.
Ich habe das jetzt nur nochmal etwas genauer dazu geschrieben, weil ich mir nicht ganz sicher bin, ob das Problem schon klar war.
Aber so oder so, vielen Dank erstmal!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2020, 22:02
Titel:
|
|
|
|
|
Hallo,
Zitat: |
In den folgenden 3 Spalten stehen jeweils die x,y,z-Koordinaten |
Dann musst du die Spalten aus der Matrix extrahieren.
Zitat: |
dann soll Partikel 1 mit Partikel 2 verglichen werden, Partikel 1 mit Partikel 3.... Partikel 1 mit Partikel 10000, Partikel 2 mit Partikel 3 bis 10000. |
Das macht der Vorschlag doch?
Zitat: |
Das min-max Kriterium |
Was genau soll das sein?
Zitat: |
Ich brauche nur noch so eine if else Schleife |
if-else brauchst du sehr wahrscheinlich nicht. MATLAB ist sehr gut darin, mit Vektoren und Matrizen zu arbeiten, und das sollte man bei der Datenmenge auch nutzen.
Zitat: |
und dann zB 6 Werte als Ausgabe für jeden einzelnen Partikel, nach dem Prinzip: Partikel 1 ist verbunden mit Partikel 2,3,4,5,6,7 |
Das könnte z.B. find liefern.
Meine Empfehlung wäre, das ganze mal Schritt für Schritt anzugehen. Hier sind ein halbes Dutzend Fragen auf einmal, und meist ist ein Schritt einfacher, wenn der vorherige erledigt ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Lunatik42 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 27.08.20
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: 2020a
|
|
|
|
|
|
Verfasst am: 27.08.2020, 22:12
Titel:
|
|
Alles klar, danke, ich mach mich da mal ran!
|
|
|
|
|
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.
|
|