2011-08-22 105 views
0

我有一些CSV文件,每一個都代表我想生成的3D表面圖。Matlab - 如何繪製我的數據?

該文件的結構如下:

  • 的文件的列的數字代表在X軸
  • 的每一行中的值表示Y軸
  • 和行號表示在Z軸

然而,文件中的每一個,其他的線代表前行的數據點,1個標準差。

此外,每一對行都比最後一行長。

所以我想要的是每個圖上的兩個曲面。第一個曲面由每個奇數行代表,第二個曲面由每個偶數行代表。

我該怎麼做?

感謝

回答

0

,我知道你不能在Matlab非方陣。所以,你 可以做的最接近放的NaN在缺少空間:

A = [ 
    10 10 NaN NaN NaN 
    2 2 NaN NaN NaN 
    20 20 20 NaN NaN 
    3 3 3 NaN NaN 
    30 30 30 30 30 
    4 4 4 4 4 
]; 

其他的都是一樣的。

斯普利特:

[rows, cols] = size(A); 
A_mean = A(1:2:rows, :); 
A_sd = A(2:2:rows, :); 

請軸線(我重新安排這些是像你;)

[XX, ZZ] = meshgrid(1:cols, 1:(rows/2)) 

和情節:

surf(XX, A_mean, ZZ); hold('on'); 
surf(XX, A_sd, ZZ); hold('off') 
+0

謝謝您的回答,對不起,我省略我現在添加的重要信息來自於我的問題:每一對行比前一對長。你也可以告訴我你的x,y,z的順序是什麼,所以我可以弄清楚要改變它的方式以獲得它的方式嗎?謝謝。 – Griffin

+0

如果沒有用零填充行的末尾是不可能的,我不介意 - 但我也需要一些指導如何做到這一點 - 再次感謝您的時間。 – Griffin

+0

@Griffin我不記得如果你讀了一個非正方形的CSV會發生什麼 - 我認爲它會在沒有單元的情況下放0。可能是錯誤的。 – Owen