可能是scatter3
我不明白的地方。我有一个矩阵,其中所有切片但最后一个是NaNed(M(:,:,1:10) = NaN;
),然后它被置换切换第一个和最后一个维度。因此M(11,:,:)
中只有值。我希望所有绘制的值都在x==11
的Y-Z平面上,但是情节看起来不同(参见下面的代码和图片)。有什么解释吗?
M = rand(22,55,11);
M(:,:,1:10) = NaN;
M = permute(M,[3 2 1]);
shape = size(M)
[x, y, z] = meshgrid(1:shape(1), 1:shape(2), 1:shape(3));
scatter3(x(:), y(:), z(:), 4, M(:), 'fill');
view([60 60]);
xlabel('X ', 'FontSize', 16);
ylabel('Y ', 'FontSize', 16);
zlabel('Z ', 'FontSize', 16);
答案 0 :(得分:2)
解释是meshgrid
切换 x 和 y :
来自meshgrid
文档:
MESHGRID与NDGRID类似,只是前两个输入的顺序 和输出参数被切换(即,[X,Y,Z] = MESHGRID(x,y,z) 产生与[Y,X,Z] = NDGRID(y,x,z))相同的结果。
乍一看,这应该会在 y == 11( x 和< em> y 相对于您最初的预期进行了互换。但请注意,您的代码错误地处理 x 和 y 大小(因为meshgrid
)。这具有额外的效果,即x
和y
坐标得到洗牌&#34;并且你没有看到一个平面(即使在 X-Z 中),而是一个格子。
所以解决方案是使用ndgrid
,它不进行任何切换。只需替换&#34; meshgrid
&#34; by&#34; ndgrid
&#34;在你的代码中。结果数字现在符合预期: