声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4193|回复: 14

[绘图技巧] 求助关于四维数据绘图

[复制链接]
发表于 2009-10-12 10:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
想问一下,如果要画四维图形
四维数据,第四维是关于球外的三维空间的函数;
用颜色表示函数大小,函数v的值与r,theta,phi没有表达式关系,用下列的slice程序老错,改了很久,也没改好。
麻烦帮忙看看,或者各位有更好的办法?

[r,theta,phi] = meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);
[x,y,z]=sph2cart(r,Sita,Fai);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=[2,5];
yslice=[0,pi];
zslice=[0,2*pi];
slice(x,y,zi,v,xslice,yslice,zslice)
colorbar

pp.mat

12.33 KB, 下载次数: 12

数据pp.mat

回复
分享到:

使用道具 举报

发表于 2009-10-12 14:48 | 显示全部楼层
还不到绘图, 错误就太多了!

求助完整格式:出错代码和出错提示???  PLS

[ 本帖最后由 ChaChing 于 2009-10-12 14:53 编辑 ]
 楼主| 发表于 2009-10-13 09:07 | 显示全部楼层
不好意思,我贴了原来错误很多的代码跟数据

[r,theta,phi] = meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);
[x,y,z]=sph2cart(r,theta,phi);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=[2,5];
yslice=[0,pi];
zslice=[0,2*pi];
slice(x,y,z,v,xslice,yslice,zslice)
colorbar



pp.mat

12.33 KB, 下载次数: 10

pp.mat

 楼主| 发表于 2009-10-15 10:29 | 显示全部楼层
请问有人知道为什么我的程序没提示错误,但是图却画不出来呢?
发表于 2009-10-16 15:46 | 显示全部楼层
slice今天学习了下, 之前很少画3D图!~ 试了下没好结果!
程序在旧版的确没提示错误, 但在新版是会提示错误的!
由提示告知好像slice中的x/y/z需直接由meshgrid产生! 事实如何待高人路过确认

直觉LZ的问题是球座标, 考量下以sphere及surface是否可满足需求
发表于 2009-10-17 01:30 | 显示全部楼层
slice(X,Y,Z,V,sx,sy,sz) draws slices of the volume V. X, Y, and Z are three-dimensional arrays specifying the coordinates for V. X, Y, and Z must be monotonic and orthogonally spaced.
由于要求X,Y,Z是单调的,可以在画图前加一行
……
[x,y,z]=meshgrid(min(x(:)):(max(x(:))-min(x(:)))/50:max(x(:)),...
                 min(y(:)):(max(y(:))-min(y(:)))/50:max(y(:)),...
                 min(z(:)):(max(z(:))-min(z(:)))/50:max(z(:)));
slice(x,y,z,v,xslice,yslice,zslice)

……

评分

1

查看全部评分

发表于 2009-10-17 11:41 | 显示全部楼层

回复 6楼 friendchj 的帖子

slice(x,y,z,v,xslice,yslice,zslice)
里头的v不需与x/y/z对应吗? Thks
发表于 2009-10-17 14:02 | 显示全部楼层

回复 7楼 ChaChing 的帖子

v要与x/y/z大小一致
发表于 2009-10-17 14:17 | 显示全部楼层

回复 8楼 friendchj 的帖子

喔, 个人表达不清楚
经过min(x(:)):(max(x(:))-min(x(:)))/50:max(x(:))..., 不是相当于重新定义了x值, 而原先与x/y/z对应的v值, 不需重新赋予吗?
是不是我误会了x/y/z/v的含意?
发表于 2009-10-18 10:06 | 显示全部楼层

回复 9楼 ChaChing 的帖子

哦,我明白了你的意思。如果这样,应该让X,Y,Z重排的时候,让Z对应的值也重排。不好意思,忘考虑了,呵呵

评分

1

查看全部评分

发表于 2009-10-19 12:37 | 显示全部楼层

回复 楼主 ingsnow 的帖子

楼主,你的这个4维图画出来了么?
发表于 2009-10-19 23:44 | 显示全部楼层

回复 11楼 ericky 的帖子

让XYZ变单调以后,能出图。
 楼主| 发表于 2009-10-21 12:28 | 显示全部楼层

回复 11楼 ericky 的帖子

还没画出来呢
 楼主| 发表于 2009-10-21 12:44 | 显示全部楼层

回复 12楼 friendchj 的帖子

[r,theta,phi] = meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);
[x,y,z]=sph2cart(r,theta,phi);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=[2,5];
yslice=[0,pi];
zslice=[0,2*pi];
[x,y,z]=meshgrid(min(x(:)):(max(x(:))-min(x(:)))/50:max(x(:)),...
                 min(y(:)):(max(y(:))-min(y(:)))/50:max(y(:)),...
                 min(z(:)):(max(z(:))-min(z(:)))/50:max(z(:)));
slice(x,y,z,v,xslice,yslice,zslice)
colorbar


画出来的图,跟我的原意似乎差很远,我要画的是半径大小为2.5与5.0之间的同心球之间的空间函数,可是画出来很奇怪,是不是我程序还是有挺多错误的?
untitled.jpg
发表于 2009-11-10 19:57 | 显示全部楼层
成功了么?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-25 12:46 , Processed in 0.069470 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表