我有一个512x512随机矩阵,我想把它的元素放在另一个矩阵的主对角线上,这些元素都是零,这样我的对角矩阵就会是262144x262144。当然它给了我低内存错误。我也尝试过稀疏功能,但它也不起作用。任何人都可以帮助我吗? 这是代码:
A=randn(512,512);
A=A(:);
Z=sparse(diag(A));
答案 0 :(得分:2)
不是sparse
矩阵的专家,但是看docs
,我相信你可以这样做 -
sparse(1:262144,1:262144,A(:))
示例运行 -
>> A
A =
1 7 4
8 7 6
9 7 2
>> n = 9
n =
9
>> sparse(1:n,1:n,A(:))
ans =
(1,1) 1
(2,2) 8
(3,3) 9
(4,4) 7
(5,5) 7
(6,6) 7
(7,7) 4
(8,8) 6
(9,9) 2
>> full(sparse(1:n,1:n,A(:)))
ans =
1 0 0 0 0 0 0 0 0
0 8 0 0 0 0 0 0 0
0 0 9 0 0 0 0 0 0
0 0 0 7 0 0 0 0 0
0 0 0 0 7 0 0 0 0
0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 4 0 0
0 0 0 0 0 0 0 6 0
0 0 0 0 0 0 0 0 2