Matlab 在循环中创建稀疏矩阵

Matlab 在循环中创建稀疏矩阵,matlab,matrix,sparse-matrix,adjacency-matrix,Matlab,Matrix,Sparse Matrix,Adjacency Matrix,我想从存储在Mx2矩阵中的图形生成稀疏矩阵: for i = 1:m adj = sparse(Graph(i,1), Graph(i,2), 1); end 但是,adj只保留一个值。我不知道在循环之前,adj会有多大。 我如何告诉MATLAB创建这个稀疏矩阵?Nofor循环是必要的。该函数接受非零行位置向量、非零列位置向量和非零值向量。如果所有值都相同,则可以简单地使用标量值一次性初始化所有值 简单地做到这一点1: 这将使用图形(:,1)访问所有行位置,使用图形(:,2)访问列位置

我想从存储在Mx2矩阵中的图形生成稀疏矩阵:

for i = 1:m
    adj = sparse(Graph(i,1), Graph(i,2), 1);
end
但是,
adj
只保留一个值。我不知道在循环之前,
adj
会有多大。
我如何告诉MATLAB创建这个稀疏矩阵?

No
for
循环是必要的。该函数接受非零行位置向量、非零列位置向量和非零值向量。如果所有值都相同,则可以简单地使用标量值一次性初始化所有值

简单地做到这一点1:

这将使用
图形(:,1)
访问所有行位置,使用
图形(:,2)
访问列位置,最后我们将这些位置的所有值初始化为1

这还假设在
图形中有不重复的行和列位置。如果有重复的行和列位置,则在这些位置定义的非零值将累积到相同的位置。例如,如果我们的矩阵中有三个
(6,3)
的实例,那么
稀疏
矩阵中该位置的输出将是3



一,。Luis Mendo最初提出了稀疏(图(:,1),图(:,2),1)的答案,这要归功于他。同样值得指出的是,存在重复条目时的累积行为
adj = sparse(Graph(:,1), Graph(:,2), 1);