Axioma91
Artikelen: 0
Berichten: 264
Lid geworden op: di 28 dec 2010, 22:12

Matlab 2d continu gekleurd figuur met discrete data

Ik ben op zoek naar een methode in Matlab om een matrix/vector dataset in een vlak te plotten. Dat lukt en matlab geeft alle puntjes met bijbehorende intensiteit weer met een stam. Alleen ziet dat er niet uit/kun je er slecht dingen uit aflezen.

Het gaat om de volgende typen data

plaats: (x,y) en intensiteit: (z).

Ik wil dat matlab interpoleert (lineariseert) en een mooi vlak maakt (2d), waarin de kleur een maat is voor de intensiteit. Maar na lang proberen lijkt me dat niet goed te lukken. (Ik kan wel een dergelijk vlak tekenen, maar dan verschijnen er driehoekjes en witte stukken tussen te verbindingslijnen van punten (hij interpoleert in de volgorde van de data(punten)-input, dat is niet de bedoeling....)

Zou iemand me hiermee kunnen helpen? Negeer evt. de laatste zin van vorige alinea - die poging was vrij waardeloos.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Matlab 2d continu gekleurd figuur met discrete data

Kan je die data niet weergeven als afbeelding dan? Dus voor elke (x,y) in de matrix heb je een intensiteit z?

Kijk eens in de help naar 'imshow' of naar 'image', bij imshow kan je geloof ik de x en y assen specificeren.
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Matlab 2d continu gekleurd figuur met discrete data

Is dit wat je zoekt? klik me
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Matlab 2d continu gekleurd figuur met discrete data

Is dit wat je zoekt? klik me


Daar dacht ik ook eerst aan, maar hij wil juist geen surface, hij wil dat de hoogte gegeven wordt door een intensiteit in 2D.
Axioma91
Artikelen: 0
Berichten: 264
Lid geworden op: di 28 dec 2010, 22:12

Re: Matlab 2d continu gekleurd figuur met discrete data

Hm ik heb hier thuis geen matlab, dat zal ik morgen even moeten proberen. Het punt is wel dat we ongeveer 10 datapunten per plot hebben. Dat lijkt me ergens niet helemaal afbeeldingswaardig (maar als daarover geinterpoleerd kan worden, dan wel). Ik zal morgen even kijken - bedankt!

EDIT (evilBro): Ja! Iets dergelijks om de intensiteit aan de geven is prima! Misschien toch even een cursus matlab doen - deze functies zien er redelijk standaard uit. Nou goed - ik ga morgen aan de slag
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Matlab 2d continu gekleurd figuur met discrete data

Met slechts 10 datapunten zal er altijd geïnterpoleerd moeten worden, ook voor een surf-plot.

Om het in 2D te krijgen helpt het misschien als je eerst in 3D interpoleert met interp3 en dan naar een afbeelding schrijft.

Als je een dataset geeft wil ik er ook wel eens aan prutsen.

Wat is de context juist, wat voor data wil je laten zien? Want het is niet altijd relevant van de interpoleren.
Axioma91
Artikelen: 0
Berichten: 264
Lid geworden op: di 28 dec 2010, 22:12

Re: Matlab 2d continu gekleurd figuur met discrete data

Xenion schreef:Met slechts 10 datapunten zal er altijd geïnterpoleerd moeten worden, ook voor een surf-plot.

Om het in 2D te krijgen helpt het misschien als je eerst in 3D interpoleert met interp3 en dan naar een afbeelding schrijft.

Als je een dataset geeft wil ik er ook wel eens aan prutsen.

Wat is de context juist, wat voor data wil je laten zien? Want het is niet altijd relevant van de interpoleren.
De data die ik wil laten zien: de intensiteit van geluid op een afstand r van de speaker onder verschillende hoeken. Dat voor 3 frequenties tussen 30 - 10^5Hz (dacht ik) (we hebben data van frequenties in ongeveer 50 stapjes over dat interval). We selecteren een representatieve hoge, lage en midden frequentie die we apart plotten.

Dat in verschillende ruimten... Ik zal morgen en overmorgen proberen een degelijk 3D geinterpoleerd plaatje(s) te maken (omwille van het komen te beheersen van matlab - dat is ook altijd handig :) )

Het zou overigens helemaal mooi zijn als alle frequenties (dus die 50 datasetjes) in een 3d figuur afgebeeld konden worden. Bijvoorbeeld de plaats (x,y) en de frequentie (z) met kleuren als intensiteitsmaat. Geen idee of zoiets mogelijk is (in maple heb je opties om vlakken doorschijnend te maken, maar dat wordt hier wat lastig). Misschien een dwarsdoorsnede onder een bepaalde hoek - dat zou niet gek zijn.

Nou goed, dat komt later wel (of niet) - eerst een eenvoudig plaatje maken. Dan zet ik morgen meteen de data in m'n mail.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: Matlab 2d continu gekleurd figuur met discrete data

contourf
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
DePurpereWolf
Artikelen: 0
Berichten: 9.240
Lid geworden op: wo 12 mar 2003, 19:44

Re: Matlab 2d continu gekleurd figuur met discrete data

contourf lijkt me hier niet helemaal geschikt voor. Imagesc dan weer wel.

Een 4D grafirk (x en Y, intensiteit en frequentie. Is niet echt een goed idee. Meer omvangrijke grafieken maken het niet altijd even duidelijker.

Gebruik dus Meshgrid van EvilBro's link maar in plaats van het plotten met surf of mesh kun je imagesc gebruiken.
Axioma91
Artikelen: 0
Berichten: 264
Lid geworden op: di 28 dec 2010, 22:12

Re: Matlab 2d continu gekleurd figuur met discrete data

Bedankt allemaal, het is gelukt met mesh en surf plots!
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Matlab 2d continu gekleurd figuur met discrete data

Kan je mss ook een resultaat posten? Kzou willen zien wat het uiteindelijk geworden is ;)
Axioma91
Artikelen: 0
Berichten: 264
Lid geworden op: di 28 dec 2010, 22:12

Re: Matlab 2d continu gekleurd figuur met discrete data

Dit plaatje is niet een resultaat van de metingen (een verkeerde X-matrix ingevoerd (die moest ik zelf maken, omdat de grid niet uit "vierkantjes" bestaat)) - dit ziet er dus wat rommelig/ abstract uit. Qua structuur lijkt het er overigens wel op..

Om dit er wat acceptabeler uit te laten zien, ga ik een best fit in origin vinden (het kan vast ook in matlab) en met de gevonden functies een nieuw plaatje plotten. Dat ziet er dan hopelijk iets differentieerbaarder uit in de lengterichting.

Dat is wat omslachtig eigenlijk - is er niet eenzelfde soort mesh functie die een best fit probeert te vinden in beide richtingen? Of gaat dat ook allemaal handmatig??
plaatje
plaatje 834 keer bekeken

Terug naar “Informatica en programmeren”