Plot 2D surf from 3 columns (X, Y, Data)

43 次查看(过去 30 天)
Hi,
I have data disposed in the following way:
The first column rapresents the x coordinates, the second column rapresents the y coordinates and the 3rd column contains the data value at the (x, y) coords.
I can't use the function surf since it required that the 3rd column in disposed as a matrix where every index represents the coorinate.
So I'm looking for a way to convert my 3 columns in a matrix with my data, or plot directly the surface using a function that accepts that format.
Thank you!

回答(2 个)

Alan Stevens
Alan Stevens 2022-7-29
编辑:Alan Stevens 2022-7-29
plot3 will plot your points as a line (or series of points).
To get a surface, set up regular coordinates over the appropriate range for cp12x and cp12y, then use meshgrid to get a matrix, then interp2 to interpolate to find appropriate values of your magnetic field at those mesh points.
Then use surf.

Star Strider
Star Strider 2022-7-29
编辑:Star Strider 2022-7-29
Try something like this —
Tmag = readtable('FileName', 'VariableNamingRule','preserve');
x = Tmag{:,1};
y = Tmag{:,2};
z = Tmag{:,3};
L = size(Tmag,1);
xv = linspace(min(x), max(x), L);
yv = linspace(min(y), max(y), L);
[X,Y] = ndgrid(xv, yv);
Z = griddata(x, y, z, X, Y);
figure
surf(X, Y, Z)
grid on
Also consider adding:
shading('interp')
if the grid points are too dense.
.
.
  2 个评论
Vittorio Bonino
Vittorio Bonino 2022-7-29
编辑:Vittorio Bonino 2022-7-29
Thank you for the answer, but it creates a 3D surf and not a 2D:
I need to realize a sort of color map. The final result should appear like this:
Star Strider
Star Strider 2022-7-29
After the surf call, add:
shading('interp')
view(0,90)
That should work.
.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by