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

Ausfransen an den Enden meines Surfplots

 

Jonas Sander
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 12.11.20
Wohnort: ---
Version: 2020
     Beitrag Verfasst am: 10.12.2020, 14:23     Titel: Ausfransen an den Enden meines Surfplots
  Antworten mit Zitat      
Hallo zusammen,

Ich habe das Problem, dass mein Kegel, der mit dem surf-Befehl erstellt wurde, an den unteren Kanten ausfranst (siehe Bild). Kennt da jemand eine Lösung, um das Ganze zu fixen, bzw. weiß jemand, wo das her kommt? Meine Punkte, über die ich die Oberfläche lege weisen keinen, für mich ersichtlichen, Fehler auf. Habe mir die Punkte auch im Einzelnen mit plot3 genau angeguckt...

Mein Code:

Code:
clearvars;
           
            opts = spreadsheetImportOptions("NumVariables", 3);
           
            opts.Sheet = "Matlab-Koordinaten";
            opts.DataRange = "A2:C9133";
           
            opts.VariableNames = ["X_kegel", "Y_kegel", "Z_kegel"];
            opts.VariableTypes = ["double", "double", "double"];
           
            tbl = readtable("U:\Appdesigner und zugehörige Exceltabellen\Koordinaten EF1_0.xlsx", opts, "UseExcel", false);
                       
            X_kegel = tbl.X_kegel;
            Y_kegel = tbl.Y_kegel;
            Z_kegel = tbl.Z_kegel;
           
            clear opts tbl
           
            x_int=linspace(min(X_kegel),max(X_kegel),1000);
            y_int=linspace(min(Y_kegel),max(Y_kegel),1000);
            y_int=y_int(:);  
           
            [X,Y,Z]=griddata(X_kegel, Y_kegel, Z_kegel,x_int,y_int,'natural');
            figure;
           
            surf(X,Y,Z,'facecolor',[0.5 0.5 0.5],'linestyle','none');
            light
            title('EF1-0 surf');
            hold on;
            p0=[max(X_kegel) min(Y_kegel) 0];
            p1=[min(X_kegel) min(Y_kegel) 0];
            vectarrow(p0,p1);
            hold on
            p2=[max(X_kegel) max(Y_kegel) 0];
            p3=[min(X_kegel) max(Y_kegel) 0];
            vectarrow(p2,p3);
            ylabel('Ausmitte in Richtung des Pfeils');


InkedEF1_0 Matlab_LI.jpg
 Beschreibung:

Download
 Dateiname:  InkedEF1_0 Matlab_LI.jpg
 Dateigröße:  808.07 KB
 Heruntergeladen:  183 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: 10.12.2020, 14:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Habe mir die Punkte auch im Einzelnen mit plot3 genau angeguckt...

Welche Punkte? Die originalen oder X,Y,Z? Entstehen z.B. beim Interpolieren NaN, da genau genommen extrapoliert werden müsste?

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
 
Jonas Sander
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 12.11.20
Wohnort: ---
Version: 2020
     Beitrag Verfasst am: 10.12.2020, 15:43     Titel:
  Antworten mit Zitat      
Die Originalen Punkte habe ich mir angeschaut, diese sind auch im, hier angehängten Bild, zu sehen.

Zitat:
Entstehen z.B. beim Interpolieren NaN, da genau genommen extrapoliert werden müsste?


Was genau ist damit gemeint? Ich nehme mal an, dass der Surf-Befehl die Punkte interpoliert? Ich weiß nicht, ob NaN entstehen, Matlab zeigt mir diesbezüglich nichts an.

EF1_0 plot3.PNG
 Beschreibung:

Download
 Dateiname:  EF1_0 plot3.PNG
 Dateigröße:  322.61 KB
 Heruntergeladen:  193 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: 10.12.2020, 17:59     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich nehme mal an, dass der Surf-Befehl die Punkte interpoliert?

Nein, das Interpolieren übernimmt der griddata-Befehl.

Zitat:
Ich weiß nicht, ob NaN entstehen, Matlab zeigt mir diesbezüglich nichts an.

Da musst du schon aktiv schauen: die Variable Z im Workspace Browser doppelklicken und dorthin scrollen, wo du die Fransen siehst. Wenn da NaN stehen, dann fehlen Datenteile, was zu dem Ausfransen führt.

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
 
Jonas Sander
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 12.11.20
Wohnort: ---
Version: 2020
     Beitrag Verfasst am: 10.12.2020, 21:18     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für den Tipp.

Ich habe mir jetzt mal alle drei Variablen in dem Bereich genau angeschaut und es entstehen beim interpolieren NaN in meiner Z-Variablen.

Wie kann ich das Problem beheben?

Viele Grüße,

Jonas
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: 10.12.2020, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

entweder die fehlenden Werte durch sinnvolle Werte ersetzen (was "sinnvoll" heißt, musst du entscheiden) oder mit rmmissing Zeilen oder Spalten, die NaN enthalten, entfernen. Dann fehlt zwar eben ein kleiner Rand, aber es sieht besser aus.

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
 
Jonas Sander
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 12.11.20
Wohnort: ---
Version: 2020
     Beitrag Verfasst am: 10.12.2020, 21:46     Titel:
  Antworten mit Zitat      
Puhh, händisch 1000 Werte ersetzen ist, denke ich, keine Option...

Habe jetzt auch rmmissing ausprobiert, allerdings ändert das das Aussehen meines Körpers schon recht stark.

Eine andere Möglichkeit gibt es nicht?
Kann ich vielleicht meine Inputvariablen irgendwie verändern, um den NaN zu entgehen?
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: 10.12.2020, 22:01     Titel:
  Antworten mit Zitat      
Hallo,

es redet doch keiner von händisch, das kann man natürlich automatisieren. Allerdings musst du eben eine Regel vorgeben, wie diese Ersetzung stattfinden soll. Es kann auch sein, dass das Problem bei anderen Interpolationsarten nicht entsteht oder nicht so gravierend ist. Das müsstest du ausprobieren.

Zitat:
Eine andere Möglichkeit gibt es nicht?

Wenn ich eine wüsste, hätte ich sie dir gesagt.

Zitat:
Kann ich vielleicht meine Inputvariablen irgendwie verändern, um den NaN zu entgehen?

Ich kenne deine Inputvariablen nicht mal, kann also schlecht was dazu sagen. Das Kernproblem dürfte die Gitterstruktur sein, für die du Datenpunkte hast, aber die lässt sich halt nicht wirklich ändern.

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
 
Jonas Sander
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 12.11.20
Wohnort: ---
Version: 2020
     Beitrag Verfasst am: 11.12.2020, 10:12     Titel:
  Antworten mit Zitat      
Hallo Harald,

Ich habe jetzt noch einmal herum geknobelt und im Endeffekt einfach alle NaN's mit
Code:
gleich null gesetzt, das fälscht mein Modell zwar etwas ab, aber es sieht wesentlich besser aus.

Vielen Dank für deine Hilfe!
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.