Moe*_*Moe 5 matlab plot contour
我有3个数据向量,X(位置),Y(位置),两者都没有规则间隔,Z(每个位置感兴趣的值).我试过了contourf,它不起作用,因为它需要一个Z输入矩阵.
小智 8
你也可以使用griddata.
%Generate random data
x = rand(30,1);
y = rand(30,1);
z = rand(30,1);
%Create regular grid across data space
[X,Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n))
%create contour plot
contour(X,Y,griddata(x,y,z,X,Y))
%mark original data points
hold on;scatter(x,y,'o');hold off
Run Code Online (Sandbox Code Playgroud)
对于等高线图,您实际上需要z值矩阵或在网格上评估的z值集合(向量).您无法使用网格上(X,Y)点处的孤立Z值定义轮廓(即您声称拥有的).
您需要让生成过程(或函数)为(x,y)点的网格提供值.
如果没有,那么你可以从非均匀数据 创建一个表面,正确指出@nate,然后在该表面上绘制轮廓.
考虑以下(随机)示例:
N = 64; % point set
x = -2 + 4*rand(N,1); % random x vector in[-2,2]
y = -2 + 4*rand(N,1); % random y vector in[-2,2]
% analytic function, or z-vector
z = x.*exp(-x.^2-y.^2);
% construct the interpolant function
F = TriScatteredInterp(x,y,z);
t = -2:.25:2; % sample uniformly the surface for matrices (qx, qy, qz)
[qx, qy] = meshgrid(t, t);
qz = F(qx, qy);
contour(qx, qy, qz); hold on;
plot(x,y,'bo'); hold off
Run Code Online (Sandbox Code Playgroud)
圆对应于具有(x,y,z)每点值的原始矢量点,即插值表面轮廓上的轮廓.
