在matlab中使用surf()记录功能

时间:2014-03-22 14:43:12

标签: matlab 3d

我想在matlab中用3D绘制以下内容。

X = [1 2 4 8 16 32 64];
Y = [1 2 3 4 5 6 7 8 9 10];
Z = [1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;
     1 1.8 3.5 5.09 5.5 5.8 5.9;] ;
surf(X,Y,Z);
set(gca,'XTickLabel',[ 1 2 4 8 16 32 64]);
zlabel('Z');
ylabel('Y');
xlabel('X');
  • 我希望函数具有对数比例,同时X标签的值为X 是[1 2 4 8 16 32 64]。
  • 我也想绕圈子 与X,Y和Z相交的值,因为如果您可以从X值看到并不对应于图中的值
  • 为Y轴的每个值指定颜色,而不是具有着色范围

enter image description here

即使我必须使用其他功能,任何人都可以提供帮助吗?

我做了这个尝试:

  X = [1 2 4 8 16 32 64];
    Y = [1 2 3 4 5 6 7 8 9 10];
    Z = [1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;
         1 1.8 3.5 5.09 5.5 5.8 5.9;] ;
    surf(log(X),Y,Z);

    zlabel('Z');
    ylabel('Y');
    xlabel('X');
    set(gca, 'xscale', 'log')

结果如下,正如您所看到的,X轴上的值不对 enter image description here

现在,Y轴也不是从1开始,但第一个值是从1

开始

1 个答案:

答案 0 :(得分:2)

XLABEL=[ 1 2 4 8 16 32 64]
surf(log(X),Y,Z);
set(gca,'XTickLabel',XLABEL);
set(gca,'XTick',log(XLABEL));

XTick给出了标签的位置,这些位置应该是对数刻度,但标签本身(' XTickLabel')不应该是对数的。

enter image description here