[已答复] matlab怎么把二维颜色图画出三维的感觉,看着就像是山地一样

[复制链接]
ybybyb 发表于 2020-12-5 02:05:49
matlab怎么把二维颜色图画出三维的感觉,看着就像是山地一样
就是想把附件中的图片1画出图片2的效果?请问怎么实现啊
下载 .png
下载 (1).png

10 条回复


gopher 发表于 2020-12-5 14:03:19
本帖最后由 gopher 于 2020-12-5 14:04 编辑

你好,这个问题挺有意思。可以参考 matlab 自带的 logo 函数,可以在命令窗输入 open logo 查看源代码。

以下是相应的图形。
这是原始的 matlab logo

matlab 原始 logo

matlab 原始 logo


这是 matlab logo 的二维 imagesc 图

maltab logo 的维图

maltab logo 的维图


我对原始 logo 图做了简单的修改,其俯视图如下,加入灯光 (FaceLighting) 后,呈现除了明显的三维立体感

稍作修改的 matlab 三维图的俯视图

稍作修改的 matlab 三维图的俯视图



ybybyb 发表于 2020-12-5 15:59:53
gopher 发表于 2020-12-5 14:03
你好,这个问题挺有意思。可以参考 matlab 自带的 logo 函数,可以在命令窗输入 open logo 查看源代码。

...

应该不是这个做的,comsol里面有个高度表达式,做出来是上面图2的效果,并非是通过灯光效果实现的,我因为模型特殊,只能在matlab画图,想实现图2的效果,实在是想不到怎么通过程序实现。

kaaaf123 发表于 2020-12-5 16:52:59
看却来确实挺像加了光照之后的三维图的俯视效果的

“看着就像是山地一样,就是想把附件中的图片1画出图片2的效果”
2L 的方法如果不能满足你的要求你应该明确说清楚你要的到底什么效果,以及为什么他的方法没有达到你要效果

"做出来是上面图2的效果,并非是通过灯光效果实现的"
会不会 comsol 默认就是加了光照的而你没有意识到?




ybybyb 发表于 2020-12-5 18:02:50
kaaaf123 发表于 2020-12-5 16:52
看却来确实挺像加了光照之后的三维图的俯视效果的

“看着就像是山地一样,就是想把附件中的图片1画出图片2 ...

不会的,comsol里面可以对比侧面,那里添加了一个表达式,结果从侧面看去感觉像是把颜色图变长了的感觉(显示xy平面就出现了坑坑洼洼的感觉),还能增加比例因子调整这个坑坑洼洼的程度,请看附件的对比图。
QQ图片20201205175711.png
QQ图片20201205175552.png

kaaaf123 发表于 2020-12-5 21:44:10
本帖最后由 kaaaf123 于 2020-12-5 21:45 编辑

所以你需要的是俯视图还是侧视图?如果还是如 1L 所说的俯视图,你现在并没有给出一个可行的判别标准验证是否满足你的要求。就比方说下边这副图是否满足你的要求: 1.png
如果不满足你应该给出一个明确的判别依据,而不是“我感觉这不是我要的效果”之类的其他人无法执行的判别依据

另外,最好能把1L中所使用的数据或者计算公式发出来

ybybyb 发表于 2020-12-5 22:38:03
kaaaf123 发表于 2020-12-5 21:44
所以你需要的是俯视图还是侧视图?如果还是如 1L 所说的俯视图,你现在并没有给出一个可行的判别标准验证是 ...

不满足我的要求,我是需要看着有棱角的感觉,这种灯光效果看着就很光滑而且有亮有暗。实际上comsol里面可以画出surf的图,但是需要添加一个新的模式,叫高度表达式来将普通的surf图变换成坑坑洼洼的形式,附件显示了是否添加高度因子和高度因子不同取值的xy方向和xz方向的效果图。我感觉是可以通过高度因子把侧面的颜色区间就想知道这种侧面看吧颜色拉伸了很长是怎么实现的啊

不加高度因子xz方向

不加高度因子xz方向
xz+高度视图-高度因子0.1.png
xz+高度视图-高度因子0.01.png

不加高度因子xy方向

不加高度因子xy方向
xy+方向视图-高度因子0.1.png
xy+方向视图-高度因子0.01.png

ybybyb 发表于 2020-12-6 03:25:28
本帖最后由 ybybyb 于 2020-12-6 03:29 编辑
kaaaf123 发表于 2020-12-5 21:44
所以你需要的是俯视图还是侧视图?如果还是如 1L 所说的俯视图,你现在并没有给出一个可行的判别标准验证是 ...

我需要俯视图,图像的代码和数据文件如下:

data1=load('zh.txt');
x1=data1(:,1);
y1=data1(:,2);
z1=data1(:,3);
n=max(z1);
z=z1/n;
[X, Y] = meshgrid(linspace(-2,2),linspace(-2,2));
Z=griddata(x1,y1,z,X,Y);
figure,surfc(X,Y,Z)
view([0 0 1]);
axis square         
hold on
shading interp;
colorbar('southoutside');
colormap(jet);这个程序画出来就是1L的第一张图,第二张图是comsol画的,里面看不到绘图的程序,想在matlab实现第二张图的效果。
使用的txt文档请见附件。画出来就是1L的第一张图是我自己matab

zh.txt

214.7 KB, 下载次数: 1


kaaaf123 发表于 2020-12-6 12:12:11
ybybyb 发表于 2020-12-6 03:25
我需要俯视图,图像的代码和数据文件如下:

data1=load('zh.txt');

我的图光滑是因为我的数据在Z上就比较光滑,你的有棱角是因为你的数据不光滑
你把你的代码后边加一个 camlight 试试看

ybybyb 发表于 2020-12-6 13:13:26
kaaaf123 发表于 2020-12-6 12:12
我的图光滑是因为我的数据在Z上就比较光滑,你的有棱角是因为你的数据不光滑
你把你的代码后边加一个 cam ...

你好,加了以后变成这样了,侧面图像完全没有变化,不是我在7楼发的图片2和图片3的效果。
打光效果侧面.png
打光效果.png

kaaaf123 发表于 2020-12-6 13:38:16
ybybyb 发表于 2020-12-6 13:13
你好,加了以后变成这样了,侧面图像完全没有变化,不是我在7楼发的图片2和图片3的效果。
...

你不是要俯视图么?
不过其实都一样,都是通过光照实现的,在你8L的代码后边加上两行:
camlight
lighting gouraud
得到的图像就是:
1.png
要想更精细得调整光照效果需要调一些参数,例如光线角度以及和光线本身相关的属性之类的:
https://www.mathworks.com/help/m ... hting-overview.html
https://www.mathworks.com/help/m ... aphics-objects.html
https://www.mathworks.com/help/m ... sional-objects.html

至于你说的侧视图的高度因子应该只是 z 轴显示比例而已,可以通过调整
daspect([rx ry rz])
中三个数值的比例实现,具体的也可以看文档

您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表