Gebruikersavatar
Arie Bombarie
Artikelen: 0
Berichten: 682
Lid geworden op: zo 03 sep 2006, 15:51

Matlab: 3D plot van scattered data

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:
wsf1
(80.39 KiB) 132 keer gedownload
Als ik een plot maak in Matlab aan de hand van de volgende code:

Code: Selecteer alles


[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:

Afbeelding

Deze plot ziet er prima uit.

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

Code: Selecteer alles


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:
wsf2
(41.48 KiB) 132 keer gedownload
Als ik nu deze dataset plot op een zelfde manier, is dit het resultaat:

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://sciencetalk.nl/forum/index.ph ... opic=59270
Gebruikersavatar
physicalattraction
Moderator
Artikelen: 0
Berichten: 4.164
Lid geworden op: do 30 mar 2006, 15:37

Re: Matlab: 3D plot van scattered data

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?
Gebruikersavatar
Arie Bombarie
Artikelen: 0
Berichten: 682
Lid geworden op: zo 03 sep 2006, 15:51

Re: Matlab: 3D plot van scattered data

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:

Code: Selecteer alles


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

Echter moet dit uiteraard zijn:

Code: Selecteer alles


[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://sciencetalk.nl/forum/index.ph ... opic=59270

Terug naar “Informatica en programmeren”