Punkte Interpolieren, Matlab, evtl aber allgemein anzusehen

Nudelh0lz

Cadet 4th Year
Registriert
März 2014
Beiträge
120
Hallo zusammen.
Ich bin gerade dabei eine Methode in Matlab zu programmieren, die bestimmte Punkte in einem xyz Koordinatensystem verbinden bzw. interpolieren soll.
Hier mal ein Bild, was ich inetwa gegeben habe:

http://fs2.directupload.net/images/141221/334lqmfw.png

Beispielsweise so einen I-Träger-Querschnitt. Es könenn aber auch ganze 3D Modelle sein! Aber hier ist das einfach nur in XY dargestellt.
Jedenfalls kurze Beschreibung:
Ich habe eben ein Vernetztes "Ding". Die Knoten haben alle nummerierte Namen, und XYZ Koordinaten, sprich ich kann sie anhand der Nummer bzw. Koordinaten "auswählen".

Nun lief eine Methode drüber, die den Knoten Werte zuweist, von 0 bis 1. (Was die Werte bedeuten ist egal.) Hier mal ein Bild mit Paint gemacht:

http://fs2.directupload.net/images/141221/vpks2h22.png

Die Flächen wurden einfach irgendwie über die Knoten gefärbt, das ist egal, die Knoten haben die Werte!!
Die nicht gefärbten Knoten (oder halt Flächen) haben einfach einen Wert der über der Skala liegt, deshalb nicht gefärbt.

Ich kann immerhin schon mal alle wichtigen Knoten in ein Array setzen. Aber wie gesagt nur ALLE, die einzelnen Häufchen kann ich nicht extra aus machen, da die Nummerierung nicht zufällig, aber dämlich ist^^
Soll heißen, es würde schon gehen, aber da bin ich noch nicht so erfahren bzw. ich würde da ein paar weitere Stunden / Tage brauchen.
Es kann auch vorkommen, dass so ein Haufen sich über einen Großteil des Bauteils zieht!

Nun möchte ich Linien bzw. Vektoren durch diese relevanten Bereiche ziehen (braune Linien im Bild).
Das ganze soll in Matlab geschehen. Aber ich habe einfach keine Ahnung, wie ich das angehen kann. Hier würden mir sicher auch allgemeine Ansätze und Ideen helfen. Hab es schon mit einfachen "Plotte die Punkte zu linien" probiert oder mich in interpolate sachen bzgl. Matlab eingelesen, kam aber nichts gutes raus so weit.
Ich bin auch noch nicht sehr erfahren in Matlab oder allgemein Programmieren! Also hoffe ich, ihr könnt mir Ideen zur Umsetzung geben!

Mfg


Achja: 0 ist sehr sehr gut, 1 ist nicht so gut, aber noch im relevanten Bereich
 
Zuletzt bearbeitet:
Ich würde erstmal in ein passenderes Forum wechseln, da bekommst du sicher schnellere und bessere Hilfe. Und vor allem hat da bestimmt schonmal jemand die gleiche Frage gehabt.
Hab dir hier mal gleich den Thread über Grafiken und Plots rausgesucht: http://www.gomatlab.de/grafiken-und-plots-f72.html
 
Da habe ich die Frage auch schon vor einer gefühlen Ewigkeit reingestellt :D
Siehe Poster Nudelholz, post vom 21.12. :D

Leider habe ich noch keine Antwort bekommen, und die Zeit läuft davon, da ich das für die Uni brauche, und ich leider keine Ahnung habe, wen ich hier ansprechen könnte (sind alles keine Programmierer soweit) :(
Außerdem ist keiner da , weil die alle ein Leben und Ferien haben :D
 
Zuletzt bearbeitet:
nach welchen Kriterien können deine "Vektoren" dort reingelegt werden? Ist doch bestimmt irgendne Spannungs. bzw. Druckssache im Maschinenbau oder?

Ich könnte da noch mehr "Vektoren" reinlegen, siehe Anhang.

Allgemein sucht du Ausgleichspolynome eines Grades n die sich wohl hineinlegen lassen.
Allein durch grafische Auswertung in Matlab wird das nicht klappen, ein paar Bedingungen müssen schon angegeben sein (weitere Berechnungen)

Gruß
soyd

H.png
 
soyd schrieb:
nach welchen Kriterien können deine "Vektoren" dort reingelegt werden? Ist doch bestimmt irgendne Spannungs. bzw. Druckssache im Maschinenbau oder?

Ich könnte da noch mehr "Vektoren" reinlegen, siehe Anhang.

Allgemein sucht du Ausgleichspolynome eines Grades n die sich wohl hineinlegen lassen.
Allein durch grafische Auswertung in Matlab wird das nicht klappen, ein paar Bedingungen müssen schon angegeben sein (weitere Berechnungen)

Gruß
soyd


Anhang anzeigen 462442


Das ist völlig richtig so. Ich hätte auch noch zig Linien malen können, aber am Lappi mit Touchpad war das nicht so angenehm :D
Und ja es hängt sehr mit Spannungen zusammen ^^
So allein von der Überlegung her wäre es mir wohl am logischten, wenn ich einem Haufen entlang fahre oder die Haufen miteinander "verbinde" die am nähsten zueinander sind und innerhalb eines bestimmten umkreises. (Also im Sinne von: Wenn ein oder mehrere Haufen vom Haufen 1 im Umkreis von 20 mm liegt, dann verbinde Haufen 1 mit dem nähsten Vorhanden oder den 2 Nähsten. Anschließend entferne Haufen 1 aus der Auswahl. Wiederhole das für die nun verbundenen Haufen).
Nur leider kein Plan wie ich das Umsetzen kann, u.a. auch deswegen da ich nicht so einfach die Haufen auswählen kann...
 
Zuletzt bearbeitet:
ja darauf wirds drauf raus laufen, BruteForce ;)

aber eigentlich sind ja nur deine eingefärbten Punkte relevant, den Rest kannst vergessen
-> alle mögliche Kurven (gehe 1 nach rechts, unten etc) in einem Blob berechnen (deine Stützstellen)
und nun für alle gefundenen Kurven in einem Blob eine Splineinterpolation des Grades n mit den anderen gefundenen Stützstellen der anderen Blobs, soll doch bestimmt stetig sein... (Blob = nen zusammenhängender Haufen ;) )

ich würde da maximal bis 3ten -4ten Grades gehen... und auch innerhalb der Blobs 180° Kurven ausschließen.

Gruß
soyd
 
Du schreibst, dass du eine dämliche Nummerierung hast, da solltest du zuerst ansetzen, Input aufbereiten, rechnen, Output aufbereiten.

Falls du Werte filtern willst:
Code:
a=rand(1000,1);% 1000 Zufallszahlen
a(a>0.5)=[]; % Lösche alle Zahlen >0.5
idx=find(a<0.2);% indices für alle Werte <0.2
Matlab ist sehr mächtig in Operationen auf Matrizen, also denk in Matrizen, auch wenn das dann Indices in andere Matrizen sind.

Falls du die Punkte gruppieren willst, bietet Matlab mit kmeans eine Funktion für genau das.
 
@soyd
Das mit dem Interpolieren in Matlab ist bei mir noch so eine schwierige Sache. Ich saß letztens gefühlt 100 Stunden und habe mir dazu Sachen durchgelesen wie das funktioniert :D (ok es waren 2 3 Stunden)
Ich muss mich da nochmal genauer schlau machen, vllt auch mal allgemein was Interpolation außerhalb Matlab angeht ^^
Ich komme, wenn es soweit ist, dann darauf zurück. Komme zur Zeit auch eher schlecht dazu diesen Teil meiner Arbeit fortzusetzen. :(


@Hancock
Ich glaube wir reden, was die Nummerierung angeht, aneinander vorbei?
Ich habe ein Bauteil aus CAE (Abaqus). Je nachdem was für ein Bauteil ich habe, und wie ich dieses Bauteil erstelle, bekomme ich eine andere Art, wie die Knoten und Elemente durchnummeriert sind. Das Blöde daran ist einfach dass z.B. dem Element 8 die Knoten 22, 30, 251, 252 oder sonst was zugewiesen werden. (Die Knoten tragen dann in einer anderen Liste die Koordinaten)
Auserdem kommt es - wie eben erwähnt hängt es auch damit zusammen WIEich ein Bauteil erstelle - oft dazu, dass ein Element das neben einem anderen Element sitzt eine viel weitere Nummer hat (Ich habe z.B. ein 3D Bauteil, das aus 2 oder mehr einzelnen Bauteilen zusammengesetzt wurde. Da kommt es halt vor, dass beim Übergang vom Bauteil 1 zu 2 ein Zahlensprung bei den Bezeichnungen vorkommt - ich hoffe du verstehst was ich damit meine).

Jedenfalls sind die Element-Knoten-Zusammenhänge nicht in Matlab entstanden, sondern aus einem CAE Programm, das ein eigenes Inputfile mit Nummerierung und Koordinaten schreibt. Und die Methode die ich erstellen soll, soll auch für beliebige Bauteile aus diesem CAE Programm funktionieren.


LG
 
Ich versteh, was du meinst. Dann ist dein erstes Problem doch das Einlesen der Daten. Grad wenn es mal flexibel eingesetzt werden soll.

Wenn ich dein Problem richtig verstehe, dann hast du
- Nodes (mit Werten)
- Edges (Die Verbindungen zwischen den Knoten)

Und daraus berechnest du dann:
- Blobs (die Haufen, die zusammenhängen)
- Splines dazwischen

Hast du Code, der dir diese Blobs berechnet?
 
Ich habe folgendes:
Nodes: die haben XYZ koordinaten und Werte (Spannungswerte (Schubspannungnen S11, S22, S33, S12, S23 und Vergleichsspannungen), andere Werte, die aus einer Vorgänger Mehtode in Matlab entstanden sind, und eben Werte die ein wichtiges Zusammenspiel dieser darstellen - nach denen die hier im Beispiel eingefärbt worden sind). Der Farbunterschied ist btw. die Höhe der Vergleichsspannung, also 1 ist die maximale, und 0 ist die Minimale. Habe dafür die Spannungswerte einfach von 0 bis 1 normiert.
Ich habe also 4 oder 5 Matrizen, die Koordinaten / Werte für Knoten tragen.
Elemente: Einfach eine Liste im Sinne von: Element 1 hat die Eckpunkte 'Node 3, Node 234, Node 100 und Node 53'.

Ich habe (noch) keinen geschrieben, der mir einen Blob als Matrix oder sonst was ausgibt. Das ist auch u.a. ein Problem, da ich bei manchen Bauteilen nur 1 Blob bekomme, der einfach sich mehr oder weniger über das Bauteil durch krümmt...
 
Zuletzt bearbeitet:
"Blobs" werden üblicherweise als Cluster bezeichnet und die Clusteranalyse biete unzählige Verfahren um einzelne Punkte zusammenzufassen.
Eine von wahrscheinlich vielen Bibliotheken die bereits fertige Verfahren zur Verfügung stellt wäre OpenCV.
Das abdecken der Blobs mit Linien ist dann unabhängig vom ersten Schritt.
 
so,

Sylvester dauert bei mir immer länger ;)

sag mal genau was das am Schluss werden soll?
Hauptspannungen ermitteln? Mises?

wie gesagt ohne Limits für die Polynome findet man da verdammt viel, sehe da keinen Sinn dahinter.

Gruß
soyd
 
Das ist ein Projekt das u.a. mit Mises zu tun hat. Soll glaub net zu viel verraten :D :D :D

Habe gestern und heute es geschafft die Cluster in ein Array zu schreiben, dass ich jedes Cluster einzeln auswählen kann *seeeeeehr stolzer noob* ^^

Habe heute auch mit meinem Betreuer erst mal geredet, wie es weiter gehen soll, also wie das mit den Linien die da durch sollen werden soll etc... da ist man sich auch noch nicht sonderlich einig. Haben zwar einige Ansätze, was für Linien da rein kommen sollen, die ich die Tage erst mal soweit versuchen werde umzusetzen. Aber wie gesagt, was da jetzt gefordert ist wissen wir auch noch nicht genau :/

Ich lasse das so erst mal stehen. Momentan komme ich ja NOCH mehr oder weniger voran. Ich hoffe ich darf hier fröhlich weiter posten, wenn ich wieder wo hängen bleibe... (was vllt schon morgen sein könnte :D )


Lg
 
Hallo,

ich habe vor einiger Zeit mal eine Hausarbeit zum Thema Spline Interpolation geschrieben. In der Arbeit findest du auch verschiedene Matlab Codes. Wenn du mir deine Mail-Adresse mal mitteilst sende ich dir die Arbeit mal zu, in wie fern du das dann anpassen kannst weiß ich jetzt auch nicht so genau, da ich in meiner Arbeit eher einzelne Punkte interpoliert habe und keine Blobs.

Es sind hier verschiedene numerische Algorithmen progammiert wurden, Matlab selbst besitzt allerdings auch schon von Haus aus einige interpolations tools.
 
Zurück
Oben