永发信息网

Matlab中,两个很大的矩阵相乘内存溢出

答案:4  悬赏:60  手机版
解决时间 2021-02-01 07:13
Matlab中,两个很大的矩阵相乘内存溢出
最佳答案
防止内存溢出的方法如下:
1、提前计算好矩阵大小,double型矩阵每个数字8字节。
2、使用memory指令查看当前可用内存与可以生成的最大矩阵。
3、使用pack指令可以整理空余内存,增大内存可以装下的嘴大矩阵的内存。
4、使用clear var指令清除不必要的变量。
5、内存不足可以设定虚拟内存,或换用内存更大的计算机。
6、优化算法或减少精度,除了重大科研项目外,一般计算计算机内存是足够的。
全部回答
将矩阵分块
分成小块相乘再相加追问怎么分块呢?我不会啊, A是一个没有规律的数据50000*32维,不好分块啊?追答假设分成10块, 每块5000 行, 仍是32列
A=[A1; A2; ...; A10]
那么A' = [ A1', A2', ..., A3']
根据矩阵乘法
A*A' = [ A1*A1' A1*A2' .... A1*A10'
A2*A1' A2*A2' .... A2*A10'
...
A10*A1' A10*A2'... A10*A10']
10*10 块, 每块 是 (5000*32)矩阵乘以(32*5000) 应该内存足够
求出每一块积, A*A'则是这些块cat起来
如果内存还不够, 分更多的块
试试用64bit版本的matlab,64位程序可用的地址空间更大。
你机器的内存多大?我觉得现在的机器一般不会物理内存不足的。
单论这个问题, 可以说没什么办法
不过你有必要搞清楚你是否一定要把A*A'乘出来, 乘出来之后干嘛用?
一般来讲很多实际问题根本不需要把A*A'显式乘出来, 也就是说你的最终目标未必一定要通过显式保存AA'才能达到, 应该设法把这步困难的操作回避掉或者换一种方式来实现
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
好手电子地址在什么地方,我要处理点事
竹字头底下一个世字,那个字怎么读
宇翔通讯地址在什么地方,我要处理点事
铺敦的意思是什么啊?知道的请说下!
比较器中说的上下限电压是什么
公务员没有火化,丧葬费和遗孀的抚恤金怎么算
昆明五耀通讯设备有限公司(宣威分部)地址好找
求一首节奏很快的女生唱的英语歌曲,常用来当
某人在撰写论文时使用了以下的参考书:《国富
魏格纳提出的大陆漂移学说是怎么回事
宣威迅佳数码(西宁店)地址在什么地方,想过去
票夹的意思是什么啊?知道的请说下!
正常情况下,用电单位用电设备容量当大于多少
希望软件地址有知道的么?有点事想过去
电脑每次开机都要按一次重启才能启动
推荐资讯
历史书上把五胡乱华,称为伟大的民族融合,真
白头发为什么不容易染色
【2017河北中考英语答案】悬赏!!谁有2017年全
我以前脸上点了痣后,就有黑素疤了,我听别人
一个整数乘以7后、乘积的最后三位数是173,那
请问阿里斯顿热水器还是海尔热水器好?
夏季穿黑色t恤擦什麼颜色口红
中国邮政储蓄银行(燕山路店)地址在什么地方,
oracle列出指定时间范围内的所有月份?
西游记34集概括,急,急,我要演讲的,2至5分
说明文作文800字写茉莉
穿心莲药名又叫什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?