lpp8515 发表于 2011-1-17 20:56

有关matlab中"Out of memory "的问题?

因需要处理一个12000×12000大小的矩阵,并将其保存为一个图片,但matlab提示"Out of memory ",已知该矩阵具有周期性,就是可将其分为120个100×12000的矩阵,在matlab里运行大小为3000×12000的矩阵,那么如何将4个3000×12000的矩阵存成一张大小为12000×12000的图片?

qibbxxt 发表于 2011-1-18 09:27

本帖最后由 coohit 于 2016-9-12 16:35 编辑

用blockproc函数可以试一试
具体的可以看看帮助文件和roc的帖子
http://forum.vibunion.com/forum.php?mod=viewthread&tid=148322&pid=852276&page=1&extra=

lpp8515 发表于 2011-1-18 10:31

回复 2 # qibbxxt 的帖子

感谢qibbxxt!但是你发的那个连接打不开,我无法注册SimWe仿真论坛,能否给我提供个邀请码?万分感谢!

ljelly 发表于 2011-1-18 11:35

本帖最后由 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=

lpp8515 发表于 2011-1-18 20:32

回复 4 # ljelly 的帖子

谢谢,已注册!:@)

zhouyang664 发表于 2011-1-18 22:00

Out of memory 问题 论坛讨论的挺多的,楼主搜一下吧!

ChaChing 发表于 2011-1-19 00:45

roc那个帖学习了, 连同mathworks的问题也看了
可惜版本不够新, 无blockproc可试!:@L
但好奇问下此函数可解决LZ存储的问题吗?:@)

rocwoods 发表于 2011-1-19 10:36

本帖最后由 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')

lpp8515 发表于 2011-1-20 10:01

我的做法是:将100×12000的矩阵先转换成uint8类型,这样所占的存储空间小些,然后在将其复制成12000×12000的数组,matlab可以运行大小为12000×12000的uint8类型的数组。

lpp8515 发表于 2011-1-20 10:05

回复 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'.
运行是这样的,不知道为什么?

lpp8515 发表于 2011-1-20 10:27

回复 10 # lpp8515 的帖子

好的,谢谢解答!:@)

ChaChing 发表于 2011-1-20 23:30

本帖最后由 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
所以我还是喜欢有这个答案

curb 发表于 2011-1-23 10:52

顺带我也想问一下,我的程序里面有个360*180*1920的数据,memory里只能放一个,运行完之后就clear,为什么还是out of memory呢?
害我调试时只能运行一次,关掉matlab,然后再打开,再运行

ChaChing 发表于 2011-3-5 20:50

回复 13 # curb 的帖子

好奇试了下, 不会out of memory??
aa=rand(360,180,1920); clear
aa=rand(360,180,1920);
页: [1]
查看完整版本: 有关matlab中"Out of memory "的问题?