在matlab / octave图中绘制所有创建网格的线

时间:2015-10-22 10:17:23

标签: matlab plot octave matlab-figure

我制作了像这样的点图:

enter image description here

但是现在我需要绘制点之间的所有线条以在变形下创建矩形网格(即,在x和y方向上连接到最近的邻居 - 不用所有点连接所有点)。

我如何说服matlab / octave这样做?

我使用的代码在这里:

%T,H,W and k are defined above, it doesn't matter for the plot.
for ii=1:2:H
for jj=1:2:W
    k=0.1;
    x=jj;
    y=ii;
    U(ii,jj)=7*exp(0.05*(y-H))*cos(k*x-T);
    V(ii,jj)=4*exp(0.1*(y-H))*sin(k*x-T);
    X(ii,jj)=jj;
    Y(ii,jj)=ii;
end
end
    plot(X+U,Y+V,'k.');

1 个答案:

答案 0 :(得分:1)

您可以使用mesh(X,Y,Z)轻松完成所需的绘图。 您的代码存在的问题是您的矩阵中有很多零。这些可能是故意的。在那种情况下我可以提供另一种解决方案但mesh()连接矩阵中的相邻点。因此,在每个第二行和每行中都有0会将每个点连接到(0,0)。最简单的方法是让你的ii,jj以1为单位成长。

%T,H,W and k are defined above, it doesn't matter for the plot.
H = 20;
W = 40;
T = 2*pi;
for ii=1:1:H
for jj=1:1:W
    k=0.1;
    x=jj;
    y=ii;
    U(ii,jj)=7*exp(0.05*(y-H))*cos(k*x-T);
    V(ii,jj)=4*exp(0.1*(y-H))*sin(k*x-T);
    X(ii,jj)=jj;
    Y(ii,jj)=ii;
end
end
    plot(X+U,Y+V,'k.');
    hold on
    mesh(X+U, Y+V, zeros(size(X)));