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

Interpolation konkaver Flächenbereiche

 

Student_MB
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2010, 11:03     Titel: Interpolation konkaver Flächenbereiche
  Antworten mit Zitat      
Hallo,
ich habe zu folgender Problemstellung zwei Fragen (ich hoffe, ich stelle meine Frage an der richtigen Stelle im Forum). Ich importiere aus einem FEM-Programm x- und y Koordinaten und eine dazugehörige Spannung. Bei der Kontur handelt es sich um einen Zahn einer Evolventenverzahnung, mit einem Konturübergang von konvex in konkav im Zahnfußbereich. Diese Daten werden als Vektoren in Matlab eingelesen und verwendet. Unter anderem nutze ich die Daten um daraus wieder eine farbige Fläche zu plotten, jedoch will ich zuvor die Werte zwischen den Knoten interpolieren um die Auflösung des Farbverlaufs zu erhöhen. Dies funktioniert auch mit „griddata“ oder „triscatteredinterp“ ganz gut. Jedoch wird im konkaven Bereich der Kontur auch außerhalb der Kontur interpoliert und die Fläche eingefärbt, sodass ein großes „Trapez“ entsteht, das die Zahnkontur enthält. Für die Darstellung soll aber der Zahn erhalten bleiben.

Somit meine Frage:
Gibt es eine Möglichkeit auch konkave Flächenbereiche richtig zu interpolieren oder kann ich nach der Interpolation diese Bereiche wieder entfernen?

Des Weiteren möchte ich die interpolierten Werte, die ich aus „griddata“ erhalte mit einem Grenzwert vergleichen, sodass alle Werte die unter dieser Grenze liegen in einer Farbe (zB.: schwarz) und alle Werte die über der Grenze liegen in einer anderen Farbe (zB.: weiß) geplottet werden. Jedoch habe ich es bis jetzt nicht herausgefunden wie ich die Matrix, die aus „griddata“ entsteht, weiter bearbeiten kann, sodass ich nur noch einen schwarz/weiß-Plot erhalte.

Würde mich sehr freuen, wenn jemand zu meinen beiden Fragen eine Lösung hätte.

Vielen Dank im Voraus!!!
Smile
_________________

Gruß, Student_MB
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2010, 11:40     Titel:
  Antworten mit Zitat      
Hallo,

zur ersten Frage: setze die nicht gewünschten Werte auf NaN, dann werden sie nicht geplottet.

zur zweiten Frage: die Farbgebung wird über den Befehl colormap gesteuert. Natürlich muß man evtl. die Hintergrundfarbe anpassen - weiß auf weiß sieht man schlecht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Student_MB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2010, 12:08     Titel:
  Antworten mit Zitat      
Hallo Harald,
danke für deine schnelle Antwort. Leider bin ich noch ein Matlab-Anfänger, sodass mein Matlab-Wissen sehr beschränkt ist.
Somit habe ich keine Vorstellung wie ich aus der Matrix, die mit "griddata" entsteht, Werte die ich nicht haben möchte auf NaN setzen kann. Vielmehr fehlt mir ein Vergleichskriterium anhand dessen ich die Werte außerhalb zu null setzen kann. Was ich habe, sind die Koordinaten der Knoten als Vektoren und die Koordinaten der linken und rechten Konturseite des Zahnes, sprich, es gibt einen Vektor (x_) und (y_) der die Koordianten der Ränder enthält. jedoch mit weniger Punkten, da die Vektoren vor der Interpolation entstanden sind.

"colormap" ist mir ein Begriff, und ich habe auch versucht colormap anzuwenden. jedoch habe ich nicht herausgefunden, wie ich innerhalb colormap nur zwei farben definieren kann und zudem noch einen Grenzwert festlegen kann an dem die Farbe wechseln soll.

Danke für weitere Hilfen!!!
_________________

Gruß, Student_MB
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2010, 12:51     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Vielmehr fehlt mir ein Vergleichskriterium anhand dessen ich die Werte außerhalb zu null setzen kann.

Das ist für mich auch schwer zu beantworten, vor allem da ich mir die Anwendung nicht wirklich vorstellen kann. Aber vielleicht hilft convhull, um die konvexe Hülle erstmal zu bestimmen?

Code:
"colormap" ist mir ein Begriff, und ich habe auch versucht colormap anzuwenden. jedoch habe ich nicht herausgefunden, wie ich innerhalb colormap nur zwei farben definieren kann und zudem noch einen Grenzwert festlegen kann an dem die Farbe wechseln soll.


z.B. so:
Code:
colormap([0 0 0; 1 1 1])

Verschieben des Schwellwerts durch Wiederholen einer Farbe.
Code:
colormap([0 0 0; 0 0 0; 1 1 1])


Evtl hilft auch
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ivo_Tu-Berlin

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2010, 11:58     Titel: Probleme beim Interpolieren auf konkaven Flächen
  Antworten mit Zitat      
Hallo,

ich habe ein ähnliches Problem.

Matlap macht Probleme beim interpolieren auf gekrümmten Flächen.
Weder griddata noch DelaunayTri (freeBoundary,InOut) helfen weiter.
Die Werte einfach mit NaN zu belegen ist in anbetracht der Geometrie und Datenmenge nicht möglich und eher unelegant.

Eventuell kann euch die anhängende Grafik eine Vorstellung davon geben.

Hoffe Ihr könnt mir weiterhelfen.
Vielen Dank

Aktuator.png
 Beschreibung:
Aktuatorschnitt. Es soll nur auf der Fläche interpoliert werden um einen Konturplot zu erstellen.

Download
 Dateiname:  Aktuator.png
 Dateigröße:  17.84 KB
 Heruntergeladen:  866 mal
 
Klaus_MS

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2010, 10:41     Titel: Boundary
  Antworten mit Zitat      
Habe genau das gleiche Problem, ein irreguläres FEM grid, für das ich gerne eine Interpolation auf ein reguläres grid hätte. Die Grenze bestimmen bekomme ich mittlerweile aber hin (Convex hull bringt da nichts, da es den äußersten Rand der Datenpunkte erfasst, nicht aber die "Struktur"). Lösung: Man berechnet den Radius der Kreise, in die jedes Dreieck eingeschrieben werden kann (hab ich im Exchange gefunden). Dann eine Schwelle setzen und die großen Kreise rauswerfen. Zum Plotten klappt das, zum Interpolieren weiß ich noch nicht, wie man die entsprechenden Dreiecke löscht. Hier ein Beispielcode:

Code:

dt=DelaunayTri(Xtemp,Ytemp)
[CC RCC]=circumcenters(dt);
thresh=5;
index=find(RCC<=thresh);
trisurf(dt(index,:),Xtemp,Ytemp,Ztemp);
 


Wenn mir jemand sagen könnte, wie ich die großen Triangles aus dem dt gelöscht bekomme, wäre das super. Dann könnte ich danach mit dt in TriScatteredInterp gehen und wäre fertig.

Danke schon mal!

Klaus
 
Klaus_MS

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2010, 12:23     Titel: "Lösung"
  Antworten mit Zitat      
Hier

http://www.mathworks.de/matlabcentr.....reader/view_thread/286773

hat jemand das Problem mit der ganz großen Keule gelöst... Das muss doch einfacher gehen!
 
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 - 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.