MATLAB 中怎样初始化一个很大的稀疏矩阵

补充一下,我需要一个很大的稀疏矩阵,先对其进行初始化,然后期中的某些子矩阵和元素需要单独定义,怎样生成一个这样的初始化的矩阵呢,比如我需要一个m×n的矩阵,直接用sparse(m,n),生成一个全是零元素的矩阵,然后再具体定义其他元素么?

我这样做了,可是MATLAB 提示我这样会让sparse 变慢,请问哪位高手有更好的建议处理这个问题吗?

第1个回答  2011-08-17
用sparse命令
既可以从一个数组直接生成矩阵,也可以将现有矩阵中的零压缩掉后存储,节约内存
例如:
>> a=1:10;
>> b=[2 3 4 12 20 7 8 9 10 1];
>> c=[5 6 34 67 12 2 5 7 8 2];
>> A=sparse(a,b,c,20,20);
>> A

A =

(10,1) 2
(1,2) 5
(2,3) 6
(3,4) 34
(6,7) 2
(7,8) 5
(8,9) 7
(9,10) 8
(4,12) 67
(5,20) 12

>> size(A)

ans =

20 20

压缩存储矩阵示例:

A =

1 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0 0
0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 6 0 0 0 0
0 0 0 0 0 0 7 0 0 0
0 0 0 0 0 0 0 8 0 0
0 0 0 0 0 0 0 0 9 0
0 0 0 0 0 0 0 0 0 10

>> sparse(A)

ans =

(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
(5,5) 5
(6,6) 6
(7,7) 7
(8,8) 8
(9,9) 9
(10,10) 10追问

谢谢您的回答,我知道sparse的用法,可是根据我在原先提问中问到的情况,想知道有没有更好的办法

本回答被网友采纳
第2个回答  2011-08-17
同问