求助关于四维数据绘图
想问一下,如果要画四维图形四维数据,第四维是关于球外的三维空间的函数;
用颜色表示函数大小,函数v的值与r,theta,phi没有表达式关系,用下列的slice程序老错,改了很久,也没改好。
麻烦帮忙看看,或者各位有更好的办法?
= meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);
=sph2cart(r,Sita,Fai);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=;
yslice=;
zslice=;
slice(x,y,zi,v,xslice,yslice,zslice)
colorbar 还不到绘图, 错误就太多了!
求助完整格式:出错代码和出错提示???PLS
[ 本帖最后由 ChaChing 于 2009-10-12 14:53 编辑 ] 不好意思,我贴了原来错误很多的代码跟数据
= meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);
=sph2cart(r,theta,phi);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=;
yslice=;
zslice=;
slice(x,y,z,v,xslice,yslice,zslice)
colorbar
原帖由 ChaChing 于 2009-10-12 14:48 发表 http://www.chinavib.com/forum/images/common/back.gif
还不到绘图, 错误就太多了!
求助完整格式:出错代码和出错提示???PLS 请问有人知道为什么我的程序没提示错误,但是图却画不出来呢? slice今天学习了下, 之前很少画3D图!~ 试了下没好结果!
程序在旧版的确没提示错误, 但在新版是会提示错误的!
由提示告知好像slice中的x/y/z需直接由meshgrid产生! 事实如何待高人路过确认
直觉LZ的问题是球座标, 考量下以sphere及surface是否可满足需求 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是单调的,可以在画图前加一行
……
=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)
……
回复 6楼 friendchj 的帖子
slice(x,y,z,v,xslice,yslice,zslice)里头的v不需与x/y/z对应吗? Thks
回复 7楼 ChaChing 的帖子
v要与x/y/z大小一致回复 8楼 friendchj 的帖子
喔, 个人表达不清楚经过min(x(:)):(max(x(:))-min(x(:)))/50:max(x(:))..., 不是相当于重新定义了x值, 而原先与x/y/z对应的v值, 不需重新赋予吗?
是不是我误会了x/y/z/v的含意?
回复 9楼 ChaChing 的帖子
哦,我明白了你的意思。如果这样,应该让X,Y,Z重排的时候,让Z对应的值也重排。不好意思,忘考虑了,呵呵回复 楼主 ingsnow 的帖子
楼主,你的这个4维图画出来了么?回复 11楼 ericky 的帖子
让XYZ变单调以后,能出图。回复 11楼 ericky 的帖子
还没画出来呢回复 12楼 friendchj 的帖子
= meshgrid(2.5:2.5/50:5,0:pi/50:pi,0:2*pi/50:2*pi);=sph2cart(r,theta,phi);%球坐标转成直角坐标系
s=(load('pp.mat','-mat'));
v=s.ppdata;%ppdata是51*51*51大小的离散点数据
xslice=;
yslice=;
zslice=;
=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之间的同心球之间的空间函数,可是画出来很奇怪,是不是我程序还是有挺多错误的? 成功了么?
页:
[1]