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

scatter3 zu surface plot

 

baustamm
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 23.02.2014, 16:11     Titel: scatter3 zu surface plot
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:
Ich habe ein Set aus Daten aus einer Simulation, daher kann ich keine Verbindung mit einer Formel zwischen den Daten herstellen. In jeder Zeile Matrix A befinden sich drei Einträge welche zusammen einen Punkt ergeben.
Die Daten kann ich prima mit einem scatter3 plot plotten. Sieht dann auch so aus wie ich möchte. Allerdings hätte ich nun gerne einen Surface plot. Meine Idee: man müsste jede Punkt mit seinen Nachbarpunkten verbinden und die Fläche zwischen den Linien ausgefüllen. Vielleicht geht es aber auch ganz anders.

Kann mir jemand helfen einen solchen plot zu erstellen? Meine bisherigen Versuche sehen leider alle nicht so aus wie ich es mir wünsche.

Vielen Dank!

Code:

A = [0   10.0000         0;
    0.1147   10.0000    0.2479;
    0.2315   10.0000    0.6375;
    0.2991   10.0000    1.2000;
         0   15.0000         0;
    0.1169   15.0000    0.1089;
    0.2797   15.0000    0.3828;
    0.4252   15.0000    0.7025;
    0.5317   15.0000    1.1252;
    0.5578   15.0000    1.7604;
    0.0857   20.0000    0.0000;
    0.2098   20.0000    0.1640;
    0.3367   20.0000    0.3174;
    0.4564   20.0000    0.4982;
    0.5608   20.0000    0.7357;
    0.6431   20.0000    1.0564;
    0.6732   20.0000    1.5730;
    0.6732   20.0000    2.2022;
    0.1092   25.0000         0;
    0.2233   25.0000    0.1206;
    0.3390   25.0000    0.2332;
    0.4517   25.0000    0.3612;
    0.5568   25.0000    0.5260;
    0.6488   25.0000    0.7560;
    0.7193   25.0000    1.0919;
    0.7327   25.0000    1.7094;
    0.7327   25.0000    2.3931;
    0.7327   25.0000    3.0769;
    0.1328   30.0000    0.0000;
    0.2320   30.0000    0.0888;
    0.3320   30.0000    0.1726;
    0.4308   30.0000    0.2636;
    0.5260   30.0000    0.3737;
    0.6149   30.0000    0.5184;
    0.6931   30.0000    0.7218;
    0.7536   30.0000    1.0218;
    0.7675   30.0000    1.5765;
    0.7675   30.0000    2.2071;
    0.7675   30.0000    2.8377;
    0.7675   30.0000    3.4683;
    0.1797   40.0000         0;
    0.2830   40.0000    0.0723;
    0.3862   40.0000    0.1447;
    0.4880   40.0000    0.2272;
    0.5866   40.0000    0.3323;
    0.6790   40.0000    0.4820;
    0.7585   40.0000    0.7237;
    0.8022   40.0000    1.2205;
    0.8033   40.0000    2.0215;
    0.8033   40.0000    2.8300;
    0.8033   40.0000    3.6386;
    0.8033   40.0000    4.4472;
    0.2247   50.0000    0.0000;
    0.3244   50.0000    0.0598;
    0.4237   50.0000    0.1227;
    0.5215   50.0000    0.1959;
    0.6163   50.0000    0.2905;
    0.7051   50.0000    0.4283;
    0.7804   50.0000    0.6622;
    0.8180   50.0000    1.1674;
    0.8188   50.0000    1.9353;
    0.8188   50.0000    2.7095;
    0.8188   50.0000    3.4836;
    0.8188   50.0000    4.2578;
    0.2668   60.0000    0.0000;
    0.3637   60.0000    0.0528;
    0.4602   60.0000    0.1105;
    0.5556   60.0000    0.1799;
    0.6488   60.0000    0.2734;
    0.7371   60.0000    0.4212;
    0.8106   60.0000    0.7349;
    0.8259   60.0000    1.6941;
    0.8259   60.0000    2.8236;
    0.8259   60.0000    3.9530;
    0.8259   60.0000    5.0824;
    0.8259   60.0000    6.2118;
    0.3056   70.0000    0.0000;
    0.3985   70.0000    0.0476;
    0.4910   70.0000    0.1013;
    0.5829   70.0000    0.1676;
    0.6735   70.0000    0.2600;
    0.7607   70.0000    0.4202;
    0.8283   70.0000    0.9747;
    0.8291   70.0000    2.8758;
    0.8291   70.0000    4.7929;
    0.8291   70.0000    6.7101;
    0.8291   70.0000    8.6273;
    0.8291   70.0000   10.5445;
    0.3410   80.0000    0.0000;
    0.4278   80.0000    0.0429;
    0.5143   80.0000    0.0922;
    0.6002   80.0000    0.1535;
    0.6848   80.0000    0.2388;
    0.7661   80.0000    0.3870;
    0.8299   80.0000    0.8767;
    0.8307   80.0000    2.5833;
    0.8307   80.0000    4.3055;
    0.8307   80.0000    6.0277;
    0.8307   80.0000    7.7500;
    0.8307   80.0000    9.4722;
    0.3731   90.0000    0.0000;
    0.4549   90.0000    0.0397;
    0.5365   90.0000    0.0860;
    0.6176   90.0000    0.1441;
    0.6979   90.0000    0.2262;
    0.7756   90.0000    0.3755;
    0.8313   90.0000    1.1095;
    0.8314   90.0000    3.3232;
    0.8314   90.0000    5.5387;
    0.8314   90.0000    7.7542;
    0.8314   90.0000    9.9697;
    0.8314   90.0000   12.1852;
    0.4021  100.0000    0.0000;
    0.4793  100.0000    0.0371;
    0.5562  100.0000    0.0809;
    0.6329  100.0000    0.1364;
    0.7090  100.0000    0.2158;
    0.7831  100.0000    0.3675;
    0.8317  100.0000    1.5092;
    0.8317  100.0000    4.5276;
    0.8317  100.0000    7.5459;
    0.8317  100.0000   10.5643;
    0.8317  100.0000   13.5827;
    0.8317  100.0000   16.6011;
    0.4284  110.0000    0.0000;
    0.5009  110.0000    0.0349;
    0.5734  110.0000    0.0765;
    0.6456  110.0000    0.1293;
    0.7173  110.0000    0.2055;
    0.7873  110.0000    0.3548;
    0.8319  110.0000    1.6516;
    0.8319  110.0000    4.9549;
    0.8319  110.0000    8.2582;
    0.8319  110.0000   11.5614;
    0.8319  110.0000   14.8647;
    0.8319  110.0000   18.1680]
scatter3(A(:,1),A(:,2),A(:,3),'+','linewidth',2)
 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

siehe hier:

http://www.mathworks.de/de/help/mat.....as-a-surface.html#f0-9140

Ein Problem kann allerdings sein, dass deine Daten zum selben x-y - Paar verschiedene z-Werte enthalten.
Gibt es in deinem Beispiel dafür eine Erklärung? Es ist dann ja nicht wirklich sinnvoll, da eine Oberfläche durchzulegen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 23.02.2014, 17:23     Titel:
  Antworten mit Zitat      
Hallo Harald,

genau wie du sagst gibt es doppelte x-y Paare mit dem selben z Wert. Die Werte kommen bilden eine Pareto-Front ab, allerdings ist die zweite Spalte keine Optimierungsvariable sondern einfach nur eine Schleife welche erhöht wird (sonst sind numerisch Probleme aufgetreten). Im Bereich sehr kleiner oder sehr großer Werte kann es dann zu den gleichen Paaren mit unterschiedlichem z Wert kommen. Evtl. kann man diese auch löschen oder leicht variieren.

Bei dem Link meinst du wahrscheinlich das Beispiel "Example – Displaying Nonuniform Data on a Surface", da habe ich das Problem das mein Matlab (2011b) scatteredInterpolant nicht unterstützt.

Wie ich bereits gesagt habe finde ich, dass der scatter3 Plot für eine Fläche geeignet wäre wenn einfach nur alle Punkte in der Nähe verbunden wären und die Flächen ausgefüllt. Ich weiss aber nicht wie das geht.

Danke schon mal für deine Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Evtl. kann man diese auch löschen oder leicht variieren.

Das ist als Vorverarbeitungsschritt notwendig.

Zitat:
da habe ich das Problem das mein Matlab (2011b) scatteredInterpolant nicht unterstützt.

Trag das doch bitte in deinem Profil ein, dann kann man das bei Vorschlägen berücksichtigen.
Wenn ich mich recht erinnere, gibt es in deiner Version für diesen Zweck
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 23.02.2014, 18:28     Titel:
  Antworten mit Zitat      
Ich habe folgendes probiert aber das Ergebnis ist leider äußerst unbefriedigend. Das mit dem Verändern der Werte ist momentan natürlich auch nur sehr suboptimal und jetzt nur um auf das auf die Schnelle zu testen
Code:
x = A(:,1);
y = A(:,2);
z = A(:,3);

for ii=1:length(x)
    for jj=1:length(x)
        if x(ii) == x(jj)
        x(ii) = x(ii) + rand*1e-3;
        end
    end
end

[xq,yq] = meshgrid(min(x):.2:max(x), min(y):.2:max(y));
vq = griddata(x,y,z,xq,yq);
figure
mesh(xq,yq,vq);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
aber das Ergebnis ist leider äußerst unbefriedigend.

inwiefern unbefriedigend?

Eine Möglichkeit, doppelte Daten zu entfernen:
Code:
doppelt = diff(x)==0 & diff(y)==0;
x(doppelt) = [];
y(doppelt) = [];
z(doppelt) = [];
 


Du kannst übrigens mesh durch surf ersetzen, wenn dir das lieber ist.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 23.02.2014, 23:08     Titel:
  Antworten mit Zitat      
Ich habe mal den Plot angehängt. Die Punkte sind da wo sie sein sollen, die Surface leider nicht.
Danke schon mal für den Hinweis mit den doppelten Daten.

plot.pdf
 Beschreibung:

Download
 Dateiname:  plot.pdf
 Dateigröße:  82.71 KB
 Heruntergeladen:  393 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

sieht nach einer unglücklichen Wahl des Gitters, das viele Datenpunkte erfasst bzw. nur Datenpunkte enthält, die außerhalb des Gitters liegen.

Versuch mal etwas mehr in der Art
Code:
xu = unique(sort(x));
yu = unique(sort(y));
[xq,yq] = meshgrid(xu, yu);


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 24.02.2014, 09:56     Titel:
  Antworten mit Zitat      
Hallo,
das ist schon wesentlich besser, allerdings immer noch nicht ganz perfekt. Der Plot ist im Anhang, mein Code sieht so aus:
Code:
x = A(:,1);
y = A(:,2);
z = A(:,3);

doppelt = diff(x)==0 & diff(y)==0;
x(doppelt) = [];
y(doppelt) = [];
z(doppelt) = [];

xu = unique(sort(x));
yu = unique(sort(y));
[xq,yq] = meshgrid(xu, yu);
vq = griddata(x,y,z,xq,yq);
mesh(xq,yq,vq);
hold on
plot3(x,y,z,'o');
 


plot.pdf
 Beschreibung:

Download
 Dateiname:  plot.pdf
 Dateigröße:  74.58 KB
 Heruntergeladen:  440 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

sieht so aus, als ob dein Plot (vielleicht von einem vorherigen Versuch) immer noch die doppelten Punkte enthält. Bei mir siehts jedenfalls gut aus - soweit es die Daten eben zulassen.

Grüße,
Harald

plot.pdf
 Beschreibung:

Download
 Dateiname:  plot.pdf
 Dateigröße:  31.71 KB
 Heruntergeladen:  482 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
baustamm
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 24.02.2014, 10:35     Titel:
  Antworten mit Zitat      
Danke, das ist ja noch recht nah an dem was ich möchte. Kann man die Flächen noch ausfüllen und alles grau färben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

surf statt mesh, und dann
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 25.02.2014, 18:58     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hilfe. Leider ist das Ergebnis nicht so schön, ich denke ich werde die Punkte doch lassen.
Trotzdem vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Leider ist das Ergebnis nicht so schön

Wie gesagt - der Plot ist nur so schön wie die Daten.
Grundsätzlich bitte immer sagen, was dir nicht gefällt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 20.07.12
Wohnort: ---
Version: Matlab 2011b
     Beitrag Verfasst am: 25.02.2014, 21:13     Titel:
  Antworten mit Zitat      
Hallo,

mit den Daten hast du natürlich recht. Meine Vorstellung war ein Plot der aussieht wie der Scatter Plot nur eben als Fläche. Wenn man sich den Scatter Plot anschaut kann man sich das ja ganz gut vorstellen, wie bereits beschrieben, man müsste alle Punkte mit ihren benachbarten Punkten (also diejenigen Punkte welche für jeweils eine der sechs Raumrichtungen die kleinste euklidische Norm aufweisen oder sowas) verbinden und dann die Flächen ausfüllen. Dann würde das Ergebnis meinen Vorstellungen entsprechen. Evtl. geht das auch irgendwie aber ist dann vermutlich ein bisschen komplexer.

Grüße
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 - 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.