我想在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 = [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轴上的值不对
现在,Y轴也不是从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')不应该是对数的。