我有一个25000x3矩阵,每行包含x-,y-和z-值。现在我想做一些图形图。但是对于使用例如surf(Z),我必须使用mxn矩阵作为Z,其中m等于x的大小,n等于y的大小。如何将我所拥有的矩阵重塑为所需的mxn矩阵?问题是我的x和y值不是整数,而是浮点数,所以我假设我必须先进行插值。真的吗?用plot3绘制的数据如下:
答案 0 :(得分:4)
你的x和y值不是整数的事实根本不是问题。真正的问题是:你的(x,y)点是否形成网格?
如果您的点正在形成网格,那么您必须重新整形您的列以形成m-by-n数组。根据第一列,然后是第二列,您可能需要sort
数据,然后使用reshape
函数。
如果您的点没有形成网格,则必须进行插值。偶然scatterinterpolant class可以很好地帮助你这样做。
答案 1 :(得分:1)
如您所见,您提供的数据既没有以网格方式提供,也没有点云清晰。但是,您可以尝试执行以下操作:
trisurf
这是一个执行此操作的MATLAB代码:
%// Generate some points P
[X,Y] = ndgrid(0:30);
P = [X(:), Y(:), X(:).^2+Y(:)];
%%// Here the actual computation starts
[~,I] = unique(P(:,1:2),'rows'); %// Remove points with duplicate (x,y)-coords
P = P(I,:);
T = delaunay(P(:,1),P(:,2)); %// Triangulate the 2D-projection
surface = triangulation(T, P(:,1), P(:,2), P(:,3)); %// Project back to 3D
trisurf(surface); %// Plot
但您可能希望先删除杂散点。