Plot 2D contour of z at (x,y) coordinates

10 visualizzazioni (ultimi 30 giorni)
Ying Wu
Ying Wu il 29 Dic 2022
Commentato: Voss il 30 Dic 2022
Hi, I have three arrays with same dimension: xc, rc, P, where xc and yc are coordinates, P is pressure value at (xc,rc). Is there anyway to plot P as a 2D contour?
I know some functions like pcolor(), contourf() can do this thing, but they require P to be a matrix, not an array.
I also know scatter() can do similar thing, but I need a contour (see below), not scattered points. I attach my dataset and the color figure with many scattered points. Thanks for any suggestion!
contour figure (what I want)
scatter figure (what I generate using scatter())
load xc.mat
load rc.mat
load P.mat
scatter(xc,rc,10,P);
axis equal tight, caxis(max(abs(caxis))*[-1 1]);
xlabel('xc'); ylabel('rc');
xlim([0 10]); ylim([0 2]);

Risposte (2)

Walter Roberson
Walter Roberson il 29 Dic 2022

Voss
Voss il 30 Dic 2022
load P
load xc
load rc
n_rows = numel(unique(rc));
xcM = reshape(xc,n_rows,[]);
rcM = reshape(rc,n_rows,[]);
PM = reshape(P,n_rows,[]);
contourf(xcM,rcM,PM,'EdgeColor','none')
axis equal tight, caxis(max(abs(caxis))*[-1 1]);
xlabel('xc'); ylabel('rc');
xlim([0 10]); ylim([0 2]);
  2 Commenti
Ying Wu
Ying Wu il 30 Dic 2022
@Voss Thanks! But my data is not regular like this (39*175), so I cannot form a coordinate matrix.
Voss
Voss il 30 Dic 2022
@Ying Wu: Hmm, it seems regular:
load P
load xc
load rc
isequal(rc,repmat(unique(rc),1,175))
ans = logical
1
isequal(xc,repelem(unique(xc),1,39))
ans = logical
1
But regardless, you can use a scatteredInterpolant (which should give the same result in this case, and should work properly if you do have irregular data):
xcd = double(xc);
rcd = double(rc);
I = scatteredInterpolant(xcd(:),rcd(:),P(:));
[xcM,rcM] = ndgrid(unique(xcd),unique(rcd));
contourf(xcM,rcM,I(xcM,rcM),'EdgeColor','none')
axis equal tight, caxis(max(abs(caxis))*[-1 1]);
xlabel('xc'); ylabel('rc');
xlim([0 10]); ylim([0 2]);

Accedi per commentare.

Prodotti


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by