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

3D Surface plott mit Messdaten

 

JessicaMatlab2020

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.12.2020, 17:59     Titel: 3D Surface plott mit Messdaten
  Antworten mit Zitat      
Hallo liebes Forum,

ich benutze derzeit die Matlab version 16b.
Ich habe folgendes Problem.

Ich habe 20 Messpunkte im Raum (x,y,z-Koordinaten bezogen auf einen Mittelpunkt). Die Messunkte sind zufällig verteilt auf einer Halbkugeloberfläche. Nun möchte ich gerne auf Basis dieser Koordinaten eine Surface erstellen (Halbkugel), welche dann an den entsprechenden Messpunkten den Messwert C (Skalar) anzeigt. Zwischen den Punkten sollte die Farbe der Surface interpoliert werden.

Weiß jemand wie das geht? Ihr würdet mir wirklich sehr weiterhelfen.

Leider komme ich mit meshgrid, griddata und surf immer nur so weit, dass dann die z-Koordiante die Farbig dargestellte Fläche ist. Ich bräuchte das sozusagen in 4D (3-Koordinaten und ein Messwert)

Vielen Lieben Dank und guten Rutsch
Jessica


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.01.2021, 22:37     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe die Fragestellung nicht recht.
Bei surf kann man ein viertes Argument angeben, das die Farbgebung der Punkte steuert. Hilft das?

Falls nicht, bitte am besten den bisherigen Code posten und genau beschreiben, was was der Unterschied zwischen dem Ist-Zustand und dem Soll-Zustand 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
 
JessicaMatlab2020

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2021, 11:14     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine schnelle Antwort.

ich habe 20 Messpunkte welche auf der Oberfläche einer Halbkugel verteilt sind (Bild im Anhang).

Für diese 20 Messpunkte kenne ich die x,y,z Koordinaten im Raum ausgehend von dem Nullpunkt in mm:

Code:
% Das ist mein Programm.
z= [-25   -75  -125  -175  -225  -275  -325  -375  -425  -475  -525  -575  -625  -675  -725  -775  -825  -875  -925  -975];
x = [-1000 499 496 -492 -487 961  0 -803 784 762 -737 0  781  -369  -344 316 283  -484   0   192];
y = [ 0  -864   859   853  -844     0   947  -464  -453   440   426  -818     0   639  -596  -547   489     0  -380   111];
c= [34   34   35 35 35 35   36   36   44   46   46 47 47      47   48   52 55   54   63 65];


Wenn man den Radius dieser Punkte berechnet wird man feststellen, dass diese etwas vom idealen Radius (R=1000) abweichen (r=sqrt(x^2+y^2+z^2)).

Nun möchte ich eigentlich die Oberfläche einer Halbkugel plotten und an den entsprechenden Messpunkten (x,y,z) den Messwert C (skalarer Wert an jedem Punkt) farbig an dern Kugeloberfläche darstellen. Dabei sollte diese Kugeloberfläche erhalten bleiben.

Ich habe es bisher geschafft, das ich das gewollte Ergebniss über die deformation der Fläche über die Skalierung der Z-Koordinate erreicht habe (siehe Bild). Die Messpunkte sind als Scatter dargestellt. Dafür habe ich die Messwerte C skaliert zwischen 0 und -1000.

Code:
%

xn=-1000:1:1000;
yn=xn;

[xn2,yn2]=meshgrid(xn,yn);

% Im Bereich zwischen 0 und -1000 skalieren
c2=c-min(c);
c2=c2/max(c2);
c2=c2*-1000;

[xn3,yn3,zn3]=griddata(x,y,c2,xn2,yn2,'cubic');
figure;
surf(xn3,yn3,zn3);
shading interp
colormap(jet);
colorbar();
colorbar('ydir', 'reverse')
colormap(flipud(jet));
axis equal
hold on;
scatter3(x,y,z,'filled');
 


In der jetztigen Lösung habe ich die Z-Koordinate durch eine skalierte Version der C-Messwerte getauscht. Daurch ist aber keine Kugeloberfläche mehr enthalten.

ich möchte sozusagen eine Halbkugeloberfläche erzeugen und dann diese auf Basis der Messdaten (x,y,z,c) einfärben.

Ich hoffe diesmal ist das Problem verständlicher.
Vielen Dank

kugeloberfläche_verwölbt.PNG
 Beschreibung:

Download
 Dateiname:  kugeloberfläche_verwölbt.PNG
 Dateigröße:  128.47 KB
 Heruntergeladen:  182 mal
kugeloberfläche.PNG
 Beschreibung:

Download
 Dateiname:  kugeloberfläche.PNG
 Dateigröße:  54.61 KB
 Heruntergeladen:  195 mal
 
Harald
Forum-Meister

Forum-Meister


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

Vorschlag:
z genauso interpolieren und das Farbargument nutzen:

Code:
[xn3,yn3,c3]=griddata(x,y,c2,xn2,yn2,'cubic');
zn3=griddata(x,y,z,xn2,yn2,'cubic');
% ...
surf(xn3,yn3,zn3, c3);
% ...
scatter3(x,y,z,[], c2,'filled');


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
 
JessicaMatlab2020

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2021, 13:06     Titel:
  Antworten mit Zitat      
Perfekt Danke !
Vielen Dank für die schnelle Hilfe
 
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.