WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Funktion für Datenpunkte aus CSV-Datei

 

Lunatik42
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.08.20
Wohnort: Hamburg
Version: 2020a
     Beitrag Verfasst am: 27.08.2020, 21:09     Titel: Funktion für Datenpunkte aus CSV-Datei
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.08.2020, 21:18     Titel:
  Antworten mit Zitat      
Hallo,

die Distanzmatrix für Vektoren x, y, z kannst du unter Verwendung von Implicit Expansion so ausrechnen:
Code:
D = sqrt( (x-x').^2 + (y-y').^2 + (z-z').^2 );


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lunatik42
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.08.20
Wohnort: Hamburg
Version: 2020a
     Beitrag Verfasst am: 27.08.2020, 21:36     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.08.2020, 22:02     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lunatik42
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.08.20
Wohnort: Hamburg
Version: 2020a
     Beitrag Verfasst am: 27.08.2020, 22:12     Titel:
  Antworten mit Zitat      
Alles klar, danke, ich mach mich da mal ran! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.