Как получить разреженную матрицу размером 10M * 10M в матрице, которая обычно распределяется случайной матрицей или равномерно распределенной случайной матрицей. Когда я делаю это ниже, я получил ошибку.Как получить крупномасштабные разреженные матрицы в matlab, такие как 10M * 10M
n = 10000000;
a = sprandn(n,n,0.1);
fid = fopen('e:/matlab/matrix/normal_1M01.mtx','w');
len = nnz(a);
fprintf(fid,'%s\n','% by taoyuan');
fprintf(fid,'%d %d %d\n',n,n,len);
[m,k,s]=find(a);
for j = 1:len
fprintf(fid,'%d %d %f\n',m(j),k(j),s(j));
end
fclose(fid);
Ошибка ниже:
??? Error using ==> rand
Maximum variable size allowed by the program is exceeded.
Error in ==> sprandn at 39
i = fix(rand(nnzwanted, 1) * m) + 1;
Error in ==> generate at 3
a = sprandn(n,n,0.1);
Кстати, как получить разреженную матрицу, которая является степенным распределенной случайной матрицей, размер 10M * 10M либо.
Каждый элемент в разреженной матрице занимает 16 байт, поэтому ваша матрица требует около 10 ~ 7 * 10^7 * 0,1 * 16' байт, что составляет около 145 терабайт. Я не думаю, что на вашем компьютере установлена такая большая оперативная память :-) –