matlab中如何画横坐标不均匀的三维图
大家好,怎么样才能画出类似于上面这个图的三维图呢,我的x,y坐标都是不均匀的,都是取0.0001,0.001,0.01,0.1,1,然后z坐标是对应的取值,不知道该怎么画...
大家好,怎么样才能画出类似于上面这个图的三维图呢,我的x,y坐标都是不均匀的,都是取0.0001, 0.001, 0.01, 0.1, 1,然后z坐标是对应的取值,不知道该怎么画,谢谢大家指点!!也就是说每个x,y对应一个z值,如下表所示:
展开
1个回答
展开全部
r=log10([0.0001 0.001 0.01 0.1 1]);
[x y]=meshgrid(r);
z=[0.3899 0.3829 0.3748 0.3820 0.3884;
0.3842 0.3707 0.3692 0.3767 0.3847;
0.3737 0.3659 0.3514 0.3730 0.3739;
0.3851 0.3781 0.3641 0.3867 0.3802;
0.3886 0.3801 0.3712 0.3890 0.3879];
C=(z(1:end-1,:)+z(2:end,:))/2;
C=(C(:,1:end-1)+C(:,2:end))/2;
surfc(xx,yy,z,C);
set(gca,'xticklabel',num2str(r','1E%i'));
set(gca,'yticklabel',num2str(r','1E%i'));
追问
太有用了!非常感谢您!还想再请教您一下,我想让图中间再平滑一些,就像我问题当中的那个图一样,这样子会把图的变化趋势显示地清晰一些,这个该怎么做呢?
追答
数据量不足,要画得好看一些就要插值,获得多一些数据
r=log10([0.0001 0.001 0.01 0.1 1]);
[x y]=meshgrid(r);
z=[0.3899 0.3829 0.3748 0.3820 0.3884;
0.3842 0.3707 0.3692 0.3767 0.3847;
0.3737 0.3659 0.3514 0.3730 0.3739;
0.3851 0.3781 0.3641 0.3867 0.3802;
0.3886 0.3801 0.3712 0.3890 0.3879];
[xx yy]=meshgrid(linspace(min(r),max(r),20));
zz=interp2(x,y,z,xx,yy);
C=(zz(1:end-1,:)+zz(2:end,:))/2;
C=(C(:,1:end-1)+C(:,2:end))/2;
surfc(xx,yy,zz,C);
set(gca,'xticklabel',num2str(r','1E%i'));
set(gca,'yticklabel',num2str(r','1E%i'));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询