簡體   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