在matlab中处理溢出的内存

时间:2014-10-15 14:53:51

标签: matlab memory-management encoding

我有一个关于Matlab溢出内存的问题。我正在使用Ludy代码进行信道编码。编码符号y创建如下

y=x*G

其中G是矩阵 n -by- m x是输入符号,其大小为 1 - 逐名词

我的问题是我想要处理的输入符号数量很大。因此,我必须分配一个G矩阵,它的大小非常大。但是,它会发生溢出内存问题。我正在使用Matlab 2012a来做到这一点。你能告诉我一些方法来解决我的问题

例如,我的G矩阵 40000 -by- 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

1 个答案:

答案 0 :(得分:1)

尝试使用sparse矩阵:

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