create big matrix with only 0s and 1s

2 views (last 30 days)
freebil
freebil on 6 Nov 2013
Commented: freebil on 7 Nov 2013
I want to run the following
n = 10^6;
m = n/2;
H = sparse(m,n);
parfor jj=1:n
pos = sample(cumulative);
H(:,jj) = (rand(m,1) > 1 - degrees(pos)/m);
end
but the memory is over.
degrees(pos)/m is a different number every time. Is there any way to run it quickly?

Answers (1)

the cyclist
the cyclist on 6 Nov 2013
Unless I did the math in my head wrong, you are trying to create a matrix that is 4 terabytes of data (and is not actually sparse). That's too big.
  2 Comments
freebil
freebil on 7 Nov 2013
thanks for the answers.. I actually don't need zeros but only 1s.. Is there any way to create a sparse matrix with only ones? I thought something like that
finalcolpos=0;
parfor jj=1:n
pos = sample(cumulative);
col = (rand(m,1) > 1 - degrees(pos)/m);
colpos = find(col);
finalcolpos = [finalcolpos; colpos];
end
finalcolpos(1)=[];
H(finalcolpos)=1;
but it is slow for n>10^5

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!