在GNU Octave的scatter3图中,x轴和y轴互换。

问题描述 投票:0回答:1

假设我想绘制 f(x,y,z) = x^2 使用 scatter3 GNU Octave的函数,我的代码是

x = [1,2,3,4];
y = [1,2,3,4,5];
z = [1,2,3,4,5,6];

for xi = 1:4
    for yi = 1:5
        for zi = 1:6
            a(xi,yi,zi) = x(xi) * x(xi);
        endfor
    endfor
endfor

[xx yy zz] = meshgrid(x,y,z);
scatter3(xx(:), yy(:), zz(:), [], a(:),'fill');
xlabel('x')
ylabel('y')
zlabel('z')
colormap(rainbow)
colorbar()

enter image description here我得到的是上面的图,图中显示,函数的变化与 y 其实 y^2),并且是一个常数w.r.t。x. 我是不是做错了什么?由于 a(xi,yi,zi) = x(xi) * x(xi),我是不是应该得到 a = x^2 相反,由于指数 xi?

我已经标出了三个轴。

我在Ubuntu 18.04中使用Octave 4.2.2。

plot octave scatter3d
1个回答
2
投票

交换 xy 函数矩阵中的轴。

a(yi,xi,zi) = x(xi) * x(xi);

这是必要的,因为 meshgrids 在散点图中工作。在你的情况下, xy 轴被翻转为八度。您需要在绘制之前将它们翻转,以获得预期的输出。

文件:

表面网格是用阴影矩形绘制的。矩形[x,y]的顶点通常是 meshgrid 的输出。z 决定了每个顶点在平面上的高度,如果只给一个 z 矩阵,则在 meshgrid 上绘制 x = 1:列 (z),y = 1:行 (z)。如果只给定一个z矩阵,那么在meshgrid上绘制x=1:列(z),y=1:行(z)。因此,z的列对应不同的x值,z的行对应不同的y值。

(斜体字的文字特意加亮)

© www.soinside.com 2019 - 2024. All rights reserved.