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值,如下表所示: 展开
 我来答
dukinkin
推荐于2017-09-18 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:939万
展开全部
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'));

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式