作者zx168zx (zx168zx)
看板MATLAB
标题[绘图] 想请教有关画四维图方法(更新问题)
时间Thu Apr 2 15:11:22 2015
小弟我想画一个f(x,y,z)的图
x,y,z为3个矩阵
大小分别为
x => 64,1
y => 64,1
z => 57,1
f => 64x64x57,1
f的值就是 当x=1,y=1,z=1 带入以後得出的值
我想要在三维座标上 将f的大小用颜色(colorbar)表示
我试过scatter3(x(:,1),y(:,1),z(:,1),f,f,'filled')
本来想说用surf画 但meshgrid的矩阵也是要同样大小
但他显示我的x,y,z不一样大 而且scatter3画出来是点
我想问看看 是不是有甚麽方法可以画出f的曲面 然後颜色表示大小?
以下是P大提供的方法 给大家参考
[xx yy]=meshgrid( 64 x 64 ) %将资料做成meshgrid
for n = 1:57
f =f2(:,:,n); %用回圈一页一页画
mesh(xx,yy,f);
hold on %叠图
colorbar
drawnow
frame = getframe(1);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256);
if n == 1;
imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
else
imwrite(imind,cm,filename,'gif','WriteMode','append');
end
end
将z的变化改用叠图的方式 处理出来效果蛮不错的
另外我想问的是 如果我现在x,y,z很大的话 要如何处理
比如 f(x,y,z) 里面的 x y z各是10000的话
这样meshgrid会因为记忆体问题无法建立
请问有甚麽方法可以处理这麽大的资料量吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.1.136
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1427958685.A.6BC.html
1F:推 profyang: 感觉你需要的是3d的contour(一般contour是z=f(x,y), 你 04/02 20:55
2F:→ profyang: 需要的是t=f(x,y,z), 但是这样画真的会清楚吗? 感觉例如 04/02 20:56
3F:→ profyang: f=1的曲面跟f=2的曲面就有可能互相挡住之类的 04/02 20:56
4F:→ profyang: 如果是我宁可做成gif动画 让x,y,z其中一自变数随时间变 04/02 20:57
5F:→ profyang: 仍然画成f(x,y)然後z随时间变的2d contour 04/02 20:57
6F:推 sin55688: 依你叙述,结果会是充满颜色的方块耶?这是你要的吗? 04/02 21:33
可能也要看过结果才知道 不知道大大所谓方块是要如何呈现 pcolor在搭配甚麽吗?
※ 编辑: zx168zx (140.116.46.243), 04/04/2015 14:43:57
7F:推 profyang: 你只是要叠图就不用後面写成gif的东西了阿XD 我本意是 04/04 15:27
8F:→ profyang: 怕叠出来曲面之间可能互相挡到才建议你用动画 既然你觉 04/04 15:27
9F:→ profyang: 得效果不错代表不会挡到 那就for+hold on去叠就好了 没 04/04 15:27
10F:→ profyang: 必要写gif 04/04 15:27
11F:推 profyang: 另外资料量太大感觉很难...可能只能用for把x,y也分段画 04/04 15:29
12F:→ profyang: 去叠 04/04 15:29
纯粹只是觉得用叠图很酷XD 用for 把x,y,也去叠是甚麽意思 是把x,y也切割吗?
※ 编辑: zx168zx (140.116.46.243), 04/04/2015 15:51:34
13F:推 profyang: 对阿 把x y分小一点 04/04 15:53