Arrays 从三维阵列创建网格打印

Arrays 从三维阵列创建网格打印,arrays,matlab,plot,3d,mesh,Arrays,Matlab,Plot,3d,Mesh,我刚刚回到MATLAB,在一些基本的绘图方面遇到了麻烦。我已经搜索了mathworks.com 我有一些三维阵列,尺寸为200 x 2 x 11。为了提供一些上下文,我基本上有11个时间点,并且想为每个时间点绘制一些2D线 例如,对于时间1(即,myArray(:,:,1)),我可以生成一些类似以下内容的二维绘图: 这只是200(x,y)坐标上的插值 我已经计算了这条线在11个时间段内的演变情况,并想将其绘制成三维图。我试图利用mesh函数,它接受参数X,Y,Z。我希望我的时间点在X轴上。我的

我刚刚回到MATLAB,在一些基本的绘图方面遇到了麻烦。我已经搜索了mathworks.com

我有一些三维阵列,尺寸为200 x 2 x 11。为了提供一些上下文,我基本上有11个时间点,并且想为每个时间点绘制一些2D线

例如,对于时间1(即,
myArray(:,:,1)
),我可以生成一些类似以下内容的二维绘图:

这只是200(x,y)坐标上的插值

我已经计算了这条线在11个时间段内的演变情况,并想将其绘制成三维图。我试图利用mesh函数,它接受参数X,Y,Z。我希望我的时间点在X轴上。我的语法有点问题。直觉上,我正试图让这样的东西发挥作用:

for k = 1:11
  myArray(:,:,k) = [stDev, ret];
end

% mesh(X,Y,Z):
mesh(1:11, ??, ??)
实际上,问题的关键是我不完全理解如何将多维数组的元素转换为与网格函数兼容的格式


谢谢

从数学上讲,曲面被参数化,如X=X(u,v),Y=Y(u,v),Z=Z(u,v),其中u和v是参数。在MATLAB术语中,矩阵X,Y,Z的参数以及垂直和水平索引。在您的例子中,需要X,Y,Z为200乘以11个矩阵

Y和Z中的坐标取自3D阵列:

Y = squeeze(M(:,1,:));
Z = squeeze(M(:,2,:));
但是X应该用时间值来填充,在你的例子中是从1到11的数字。(通常,
1:size(M,3)
)要在200行中复制这些值,请使用Kronecker product和
200 1s的向量:

X = kron(1:size(M,3), ones(size(M,1),1))
现在
网格(X,Y,Z)
将提供所需的曲面


为了演示,我使用了11条曲线,它们都是具有不同比例的平方根图

M = zeros(200,2,11);
for k=1:11
    M(:,1,k) = 1:200;
    M(:,2,k) = sqrt(k*(1:200));
end
X = kron(1:size(M,3), ones(size(M,1),1));
Y = squeeze(M(:,1,:));
Z = squeeze(M(:,2,:));
mesh(X,Y,Z);

请您解释一下3D阵列的格式好吗。您希望如何绘制这些线。您有
200x2x11
阵列和11个时间点。因此,是否要绘制每个
200x2
矩阵。因此,每个时间点将有200行。另一种可能是您有两个
200x11
矩阵。所以你可以把第一个矩阵中的点考虑为<代码> x<代码> -坐标和其他矩阵中的点,如<代码> y>代码>坐标。你在找哪一个?或者这些都没有?@ParagS.Chandakkar我已经添加了一些细节。如果您需要更多的澄清,请告诉我。谢谢