3D绘图中的尺寸问题

Dimensions issue in 3D plotting

我在 scilab 中编写了以下代码并想绘制它,但该图看起来不像 3D。基本上问题是维度,x 和 y 是 1 个交叉 5 矩阵,函数 f 是 5 个交叉 5 矩阵。我试图通过使用 meshgrid 使 x 和 y 成为 5 维,但是这些函数无法使用 meshgrid(x,y) 的修改值给我结果。完整代码在这里。

clear; clc;
//Defining the range of Cartesian coordinates (x,y,z)
x = linspace(1,30,5);
y = linspace(0,30,5);
z = linspace(0,30,5);
//------------------------------------------------------------------------------
//This funciton transform Cartesian to Spherical coordinates
function [r, theta, phi]=cart2sph(x, y, z)  
  r = sqrt(x^2+y^2+z^2);
  theta = atan(y./x) 
  phi = acos(z./sqrt(x^2+y^2+z^2))'
endfunction
//------------------------------------------------------------------------------
//To get the spherical coordinates from Cartesian uing the above funciton
[r, theta, phi]=cart2sph(x, y, z)  
//------------------------------------------------------------------------------
//Defining spherical hormonic as a funciton of shperical coordinates here.
function [y]=Y(l, m, theta, phi)  
  if m >= 0 then
     y = (-1)^m/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, m, cos(theta), "norm")
  else
     y = 1/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, -m, cos(theta), "norm")
  end      
endfunction
l = 1; m = -1;
f = Y(l,m,theta,phi); 
//I got the funciton value in spherical coordinates and 
//that spherical coordinates are funciton of Cartesian coordinates. 
//So basically funciton Y is a funciton of Cartesian coordinates (x,y,z). 
//Next to plot funciton Y against (x,y)
//------------------------------------------------------------------------------
clf(); 
plot3d(x,y,f,flag=[2 4 4]); xtitle("|Y31(x,y)|");

您的问题是由于 f 的范围与 x 和 y 的范围相比非常小。

要获得您期望的结果,您可以按照以下步骤进行 plot3d(x,y,f,flag=[2 4 4]); xtitle("|Y31(x,y)|"); 斧头= gca(); ax.cube_scaling="on";