在matlab中用冲浪重建3D图形?

时间:2014-04-12 10:18:52

标签: matlab

我通常使用surf函数在matlab中绘制3D图形,但现在数据不同,所以我使用plot3,我有下图。您是否知道即使使用不同的功能,我如何重建这个数字也更容易理解。 为了更简洁,我有X值,每个X值都有一个Y值和Z值。

enter image description here

X = [ 1 ;2 ;4; 8; 16; 32; 64];
Z = [ 1; 1.8 ; 3.46 ; 6.74 ; 13.18 ; 24.34 ; 39.33]
Y = [0 ; 56.92 ; 91 ; 109.95 ; 119 ; 123.57 ; 125.51]
fig = plot3(log(X),Y,Z,'b.-');
XLABEL=[  1 2 4 8 16 32 64];
set(gca,'XTickLabel',XLABEL);
set(gca,'XTick',log(XLABEL));

YLABEL= [ 0 30 60 90 120 150 180];
set(gca,'YTickLabel',YLABEL);
set(gca,'YTick',YLABEL);

ZLABEL= [0 5 10 15 20 25 30 35 40 45 50 55];
set(gca,'ZTickLabel',ZLABEL);
set(gca,'ZTick',(ZLABEL));
ylim([0 180]);
zlim([0,55]);

grid on

1 个答案:

答案 0 :(得分:4)

很难说,因为我们没有上下文。常见的选择是:

  1. 在两个单独的图中绘制x / y和x / z。精确可读但很难获得y和z之间的连接。 subplot
  2. Plotyy,与之前相同,但在一个情节中。对应于相同x值的Y和Z值对齐。 plotyy
  3. 使用如上所示的plot3,但将每个点连接到x / z平面。 (详情如下)
  4. 在一个或多个平面上投影线并在那里绘制。 (再次绘制线条,将x,y或z设置为7 0或180,这是轴的位置)
  5. 如果两个轴非常重要,请使用简单的2d图并使用颜色/点\ /注释等表示第三维......

  6. 选项3的代码:

    在代码的最后,添加以下代码:

    X2=[X';X';nan(size(X'))];
    X2=X2(:);
    Y2=[Y';Y';nan(size(Y'))];
    Y2=Y2(:);
    Z2=[Z';zeros(size(Z'));nan(size(Z'))];
    Z2=Z2(:);
    
    hold on
    plot3(log(X2),Y2,Z2,'--')
    

    要理解它,你必须知道matlab在绘图时会跳过nans。因此,上面的代码为每个点生成一个独立的线段,将其连接到地平面。

    enter image description here