如何在matlab中得到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個字節,因此您的矩陣需要大約145 TB的「10^7 * 10^7 * 0.1 * 16」字節。我不認爲你的計算機上安裝了太多的內存:-) –