繁体   English   中英

从3D阵列创建网格图

[英]Creating a mesh plot from a 3D Array

我只是回到MATLAB并遇到一些相当基本的绘图问题。 我已经搜索过mathworks.com ...

我有一些3D数组,尺寸为200 x 2 x11。为了提供一些背景信息,基本上我有11个时间点,并且想为每个时间点绘制一些2D线。

例如,对于时间1(即myArray(:,:,1) ),我可以生成一些类似于以下内容的2D图: 在此处输入图片说明

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

我已经计算了这条线在11个时间段内的演变,并希望将其绘制成3维。 我正在尝试利用网格函数,该函数接受参数X,Y,Z。 我希望我的时间点在x轴上。 我在语法上遇到了一些麻烦。 直观地说,我正在尝试使类似的东西起作用:

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

% mesh(X,Y,Z):
mesh(1:11, ??, ??)

真正问题的症结在于我不完全了解如何将某些多维数组的元素转换为与Mesh函数兼容​​的格式。

谢谢!

在数学上,曲面的参数化如X = X(u,v),Y = Y(u,v),Z = Z(u,v),其中u和v是参数。 用MATLAB的术语来说,矩阵X,Y,Z的参数以及垂直和水平索引。 在您的情况下,您需要X,Y,Z为200 x 11矩阵。

Y和Z中的坐标取自3D数组:

Y = squeeze(M(:,1,:));
Z = squeeze(M(:,2,:));

但是X应该用时间值填充,在您的情况下,它们是从1到11的数字。 (通常为1:size(M,3) 。)要在200行中复制这些值,请使用Kronecker产品
200 1s的向量:

X = kron(1:size(M,3), ones(size(M,1),1))

现在, mesh(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);

曲线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM