matlab中的内存溢出处理
我有一个关于Matlab内存溢出的问题。我正在使用Ludy代码进行信道编码。编码符号matlab中的内存溢出处理,matlab,memory-management,encoding,Matlab,Memory Management,Encoding,我有一个关于Matlab内存溢出的问题。我正在使用Ludy代码进行信道编码。编码符号y创建如下 y=x*G 其中,G是矩阵n×m,x是大小为1×n的输入符号 我的问题是,我想处理的输入符号数量很大。因此,我必须分配一个G矩阵,它的大小非常大。但是,它会出现内存溢出问题。我正在使用Matlab2012a来做这件事。你能给我建议一些解决我问题的方法吗 例如,我的G矩阵是40000乘60000 这是我的密码 function G = gen_matrix(n,m) G = zeros(n,m
y
创建如下
y=x*G
其中,G
是矩阵n×m,x
是大小为1×n的输入符号
我的问题是,我想处理的输入符号数量很大。因此,我必须分配一个G矩阵,它的大小非常大。但是,它会出现内存溢出问题。我正在使用Matlab2012a来做这件事。你能给我建议一些解决我问题的方法吗
例如,我的G
矩阵是40000乘60000
这是我的密码
function G = gen_matrix(n,m)
G = zeros(n,m);
for i=1:m
d=randi(n/2);
column = [ones(1,d) zeros(1,n-d)];
column = column(randperm(n));
G(:,i) = column';
end
end
这是我的记忆信息
[userview systemview] = memory;
systemview.VirtualAddressSpace
ans =
Available: 1.4074e+14
Total: 1.4074e+14
尝试使用矩阵:
你读了吗:还有?另外,你的矩阵是否适合(即包含大量的零)好吧,否则就做(参见@Dan的答案)或者购买更多的RAM;)@如果你不读这些文章,AnderBiguri more RAM可能不会有帮助。默认情况下,Matlab(32位)只允许您访问2GB的RAM,无论您有多少。@user8264您使用的是什么操作系统,是32位还是64位?您的Matlab是32位还是64位?升级可能会有帮助…@Dan。我知道,内存问题比“买更多内存”要复杂得多。但除非OP知道向量将是他/她的记忆上限,否则他需要找到另一种方法。
function G = gen_matrix(n,m)
G = sparse(zeros(n,m));
for i=1:m
d=randi(n/2);
column = [ones(1,d) sparse(zeros(1,n-d))];
column = column(randperm(n));
G(:,i) = column';
end
end