在Matlab中,我可以通过执行以下操作填充完整矩阵中的所有元素组合:
A=zeros(5);
ind=[1 4 5];
A(ind,ind)=1
A =
1 0 0 1 1
0 0 0 0 0
0 0 0 0 0
1 0 0 1 1
1 0 0 1 1
当矩阵A
稀疏时,我怎样才能实现这一目标? (比如说A=zeros(1e6)
我只想要1000个元素等等......)
答案 0 :(得分:1)
您可以使用sparse
命令,如下所示:
% create a 5x5 sparse matrix A, with 1's at A(ind,ind)
[row,col] = meshgrid(ind,ind); % form indexing combinations
row = row(:); % rearrange matrices to column vectors
col = col(:);
A = sparse(row, col, 1, 5, 5);
虽然可能使用传统的A(1,2) = 1
样式索引稀疏矩阵,但通常这不是一个好主意。 MATLAB稀疏矩阵以非常不同的方式存储在幕后的完整矩阵中,并且不支持这种有效的动态索引。
要获得良好的性能,应使用sparse(i,j,x,m,n)
语法一次性构建稀疏矩阵。