我制作了像这样的点图:
但是现在我需要绘制点之间的所有线条以在变形下创建矩形网格(即,在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.');
答案 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)));