Springen naar inhoud

Matlab: 3D plot van scattered data


  • Log in om te kunnen reageren

#1

Arie Bombarie

    Arie Bombarie


  • >250 berichten
  • 682 berichten
  • Ervaren gebruiker

Geplaatst op 05 april 2013 - 00:24

Goedendag,

Ik heb in Matlab een dataset verkregen bestaande uit X, Y en Z coördinaten. De X en Y datapunten vormen het domein, en Z de bijbehorende functiewaarden.

Dit is de dataset: Bijlage  wsf1.zip   80,39K   23 maal gedownload

Als ik een plot maak in Matlab aan de hand van de volgende code:

[qx,qy] = meshgrid(linspace(min(X),max(X),100),linspace(min(Y),max(Y),100);
F = TriScatteredInterp(X,Y,Z);
qz = F(qx,qy);
surf(qx,qy,qz,'EdgeColor','none')
camlight left

Is dit het resultaat:

Geplaatste afbeelding

Deze plot ziet er prima uit.

Echter, het feitelijke domein van de functie is een driehoek, met hoekpunten:

X	 Y
0.0000	0.7853
-0.5236  -0.1745
0.5236   -0.1745

Ik wil dus alleen de functie plotten over dit domein.

Ik heb daarom alle datapunten gefilterd, met als resultaat dat alleen de X,Y data (inclusief bijbehorende Z waarde) overblijft die binnen dit domein ligt.

Het resultaat is de volgende dataset: Bijlage  wsf2.zip   41,48K   15 maal gedownload

Als ik nu deze dataset plot op een zelfde manier, is dit het resultaat:

Geplaatste afbeelding

Nu is het probleem dat deze plot er erg onzuiver uitziet aan de twee randen van het domein. Graag wil ik dat de grafiek er op de randen ook goed uit komt te zien.

Ik kan overigens nieuwe X, Y, Z data aanmaken, mocht dit nodig zijn...

Iemand een idee?

Alvast bedankt!
Help WSF met het vouwen van eiwitten en zo ziekten als kanker en dergelijke te bestrijden in de vrije tijd van je chip:
http://www.wetenscha...showtopic=59270

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

physicalattraction

    physicalattraction


  • >1k berichten
  • 3103 berichten
  • Moderator

Geplaatst op 11 april 2013 - 08:03

Persoonlijk zou ik zelf geen 3D plot maken, maar een 2D kleurenplot (imagesc), maar dat is je vraag hier niet.

Ik neem aan dat je het over die kartelrandjes hebt? Heb je al andere plot functies geprobeerd? Behalve surf, heb je ook iets als mesh, plot3 en nog andere plotfuncties. Hier staat een lijstje met alle plot functies. Misschien kun je hier eens mee gaan spelen om te kijken of dit je probleem oplost?

#3

Arie Bombarie

    Arie Bombarie


  • >250 berichten
  • 682 berichten
  • Ervaren gebruiker

Geplaatst op 29 april 2013 - 00:06

Excuses voor mijn late reactie, om de een of andere reden heb ik geen update ontvangen van dit topic.

Inmiddels heb ik de fout gevonden, ik had eerst iets als:

[qx,qy] = meshgrid(linspace(min(X),max(X),100),linspace(min(Y),max(Y)),100);

Echter moet dit uiteraard zijn:

[qx,qy] = meshgrid(linspace(min(X),max(X),100),linspace(min(Y),max(Y),100));

Toen ik het getal 100 in bijvoorbeeld 500 veranderde, werd de y resolutie dus niet verhoogd in de oude situatie, wat er voor zorgde dat de kartelrand niet verdween.

Helaas was de oude code wel feitelijk correct (maar deed dus niet wat ik wilde), en werd er dus geen foutmelding weergegeven.

Ik ben er in ieder geval uit :).
Help WSF met het vouwen van eiwitten en zo ziekten als kanker en dergelijke te bestrijden in de vrije tijd van je chip:
http://www.wetenscha...showtopic=59270





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures