有关matlab中"Out of memory "的问题?
因需要处理一个12000×12000大小的矩阵,并将其保存为一个图片,但matlab提示"Out of memory ",已知该矩阵具有周期性,就是可将其分为120个100×12000的矩阵,在matlab里运行大小为3000×12000的矩阵,那么如何将4个3000×12000的矩阵存成一张大小为12000×12000的图片? 本帖最后由 coohit 于 2016-9-12 16:35 编辑用blockproc函数可以试一试
具体的可以看看帮助文件和roc的帖子
http://forum.vibunion.com/forum.php?mod=viewthread&tid=148322&pid=852276&page=1&extra= 回复 2 # qibbxxt 的帖子
感谢qibbxxt!但是你发的那个连接打不开,我无法注册SimWe仿真论坛,能否给我提供个邀请码?万分感谢! 本帖最后由 coohit 于 2016-9-12 16:38 编辑
lpp8515 发表于 2011-1-18 10:31 static/image/common/back.gif
回复 2 # qibbxxt 的帖子
感谢qibbxxt!但是你发的那个连接打不开,我无法注册SimWe仿真论坛,能否给我提供 ...http://forum.vibunion.com/forum.php?mod=viewthread&tid=148322&pid=852276&page=1&extra=
回复 4 # ljelly 的帖子
谢谢,已注册!:@) Out of memory 问题 论坛讨论的挺多的,楼主搜一下吧! roc那个帖学习了, 连同mathworks的问题也看了
可惜版本不够新, 无blockproc可试!:@L
但好奇问下此函数可解决LZ存储的问题吗?:@) 本帖最后由 rocwoods 于 2011-1-19 10:37 编辑
嗯,blockproc函数也是最近的版本才出来的,非常给力,很多大图像问题即使按照blockproc的常规用法不好处理(我想Chaching老兄对这个问题的疑问就在这里吧),但换个思路,充分在其分块的矩阵对象以及处理函数句柄fun上面做文章也是可以解决的。
譬如楼主的问题,即可这样:
a = rand(3000,12000);
blockproc(ones(4,1),,@(block_struct) a,'Destination','E:\test.tif')
我的做法是:将100×12000的矩阵先转换成uint8类型,这样所占的存储空间小些,然后在将其复制成12000×12000的数组,matlab可以运行大小为12000×12000的uint8类型的数组。 回复 8 # rocwoods 的帖子
a = rand(3000,12000);
blockproc(ones(4,1),,@(block_struct) a,'Destination','E:\test.tif')
??? Undefined function or method 'blockproc' for input arguments of type
'function_handle'.
运行是这样的,不知道为什么? 回复 10 # lpp8515 的帖子
好的,谢谢解答!:@) 本帖最后由 ChaChing 于 2011-1-20 23:31 编辑
lpp8515 发表于 2011-1-20 10:01 http://www.chinavib.com/static/image/common/back.gif
我的做法是:将100×12000的矩阵先转换成uint8类型,这样所占的存储空间小些,然后在将其复制成12000×1200 ...
可能个人还是习惯使用老版本, upgrade需要mm!:@L
所以我还是喜欢有这个答案 顺带我也想问一下,我的程序里面有个360*180*1920的数据,memory里只能放一个,运行完之后就clear,为什么还是out of memory呢?
害我调试时只能运行一次,关掉matlab,然后再打开,再运行 回复 13 # curb 的帖子
好奇试了下, 不会out of memory??
aa=rand(360,180,1920); clear
aa=rand(360,180,1920);
页:
[1]