用于创建稀疏矩阵的矩阵索引
Matrix indices for creating sparse matrix
我想创建一个 4 x 4 稀疏矩阵 A。我想为以下条目分配值(例如 1):
A(2,1), A(3,1), A(4,1)
A(2,2), A(3,2), A(4,2)
A(2,3), A(3,3), A(4,3)
A(2,4), A(3,4), A(4,4)
根据manual page,我知道我应该分别按行和列存储索引。也就是说,对于行索引,
r=[2,2,2,2,3,3,3,3,4,4,4,4]
此外,对于列索引
c=[1,2,3,4,1,2,3,4,1,2,3,4]
因为我想给每个条目分配1,所以我使用
value = ones(1,length(r))
那么,我的稀疏矩阵将是
Matrix = sparse(r,c,value,4,4)
我的问题是这样的:
确实,我想构造一个任意维度的方阵。说,如果它是一个 10 x 10 矩阵,那么我的列向量将是
[1,2,..., 10, 1,2, ..., 10, 1,...,10, 1,...10]
对于行向量,它将是
[2,2,...,2,3,3,...,3,...,10, 10, ...,10]
请问有没有一种快速有效地构建这些列向量和行向量的方法?提前致谢。
您可以 sparse
创建完整版本后的矩阵。
A = (10,10);
A(1,:) = 0;
B = sparse(A);
我认为这个问题旨在以简单的方式创建向量c,r
。
n = 4;
c = repmat(1:n,1,n-1);
r = reshape(repmat(2:n,n,1),1,[]);
Matrix = sparse(r,c,value,n,n);
这通常会创建您指定的向量。
然而,正如其他人指出的那样,由于开销,全稀疏矩阵不是很有效。如果我没记错的话,如果密度低于 25%,稀疏矩阵会提供优势。除了第一行之外的所有内容都会导致性能下降。
我想创建一个 4 x 4 稀疏矩阵 A。我想为以下条目分配值(例如 1):
A(2,1), A(3,1), A(4,1)
A(2,2), A(3,2), A(4,2)
A(2,3), A(3,3), A(4,3)
A(2,4), A(3,4), A(4,4)
根据manual page,我知道我应该分别按行和列存储索引。也就是说,对于行索引,
r=[2,2,2,2,3,3,3,3,4,4,4,4]
此外,对于列索引
c=[1,2,3,4,1,2,3,4,1,2,3,4]
因为我想给每个条目分配1,所以我使用
value = ones(1,length(r))
那么,我的稀疏矩阵将是
Matrix = sparse(r,c,value,4,4)
我的问题是这样的:
确实,我想构造一个任意维度的方阵。说,如果它是一个 10 x 10 矩阵,那么我的列向量将是
[1,2,..., 10, 1,2, ..., 10, 1,...,10, 1,...10]
对于行向量,它将是
[2,2,...,2,3,3,...,3,...,10, 10, ...,10]
请问有没有一种快速有效地构建这些列向量和行向量的方法?提前致谢。
您可以 sparse
创建完整版本后的矩阵。
A = (10,10);
A(1,:) = 0;
B = sparse(A);
我认为这个问题旨在以简单的方式创建向量c,r
。
n = 4;
c = repmat(1:n,1,n-1);
r = reshape(repmat(2:n,n,1),1,[]);
Matrix = sparse(r,c,value,n,n);
这通常会创建您指定的向量。
然而,正如其他人指出的那样,由于开销,全稀疏矩阵不是很有效。如果我没记错的话,如果密度低于 25%,稀疏矩阵会提供优势。除了第一行之外的所有内容都会导致性能下降。