创建大尺寸对角矩阵

Creating big size diagonal matrix

我有一个 512x512 随机矩阵,我想将它的元素放在另一个矩阵的主对角线上,该矩阵的元素全为零,这样我的对角矩阵将是 262144x262144.Of 当然它给我低内存 error.I 也尝试了稀疏函数,但它也没有 work.Can 有人帮我解决这个问题吗? 这是代码:

A=randn(512,512);
A=A(:);
Z=sparse(diag(A));

不是 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