在同一个图上结合情节和冲浪(matlab)

时间:2014-06-11 12:31:27

标签: matlab plot

我想用Matlab在一张表面图上绘制一些磁盘,在同一图上。 我的问题是计算由小圆形障碍物(磁盘)散射的波。波在网格(X,Y)上计算,并存储为矩阵U.可以使用以下命令绘图:     冲浪(X,Y,U,'EdgeColor','无','facecolor','interp'); 这会导致nice picture like this(我无法在stackoverflow上传图像)

现在,我想在同一张图片上添加磁盘。请注意,“O”是磁盘中心的矩阵,“a”是磁盘半径的向量,N_scat是磁盘的数量。

hold on
surf(X,Y, U, 'EdgeColor','None', 'facecolor', 'interp');
theta = [1:361]*2*pi/360;
nb = length(theta);
for p = 1:N_scat
    plot(O(1,p).*ones(1,nb) + a(p).*cos(theta), O(2,p).*ones(1,nb) + a(p).*sin(theta), 'k', 'LineWidth', 1)
end
hold off
view(2);
colorbar;

然而,这部分地给出了期望的结果(picture here)。实际上,显示了磁盘,但正如您所看到的,大多数磁盘只是部分绘制...

有人有想法吗?

同样的结果发生在: - 网格而不是冲浪 - 没有海浪选择(经典的平面表示和边缘彩色) - 磁盘的线宽更宽或更小

提前感谢您,祝您有个美好的一天!


1 个答案:

答案 0 :(得分:2)

问题是因为圆圈是在z = 0处绘制的,因此它们在某些点处位于表面下

您可以在绘图调用中指定行的zdata,我建议在曲面的最大高度处绘制所有圆(任何更高的圆都可能影响颜色图)

在循环外定义zdata,例如

myzdata=max(U(:))*ones(1,nb);

然后在循环内设置它为行

的zdata
for p = 1:N_scat
    plot(... what you had before ...,'zdata',myzdata)
end
相关问题