Matlab:创建稀疏矩阵的聪明方法

|| 我必须创建一个比我的物理记忆大得多的matlab矩阵,并且我想利用稀疏性。 这个矩阵真的很稀疏(比如说NxN矩阵中的N个元素),而我的内存足以满足要求。我以这种方式创建矩阵: A =稀疏(zeros(N)); 但它内存不足。 您知道创建此矩阵的正确方法吗?     
已邀请:
zeros(N)
正在创建一个NxN矩阵,该矩阵不稀疏,因此内存不足。您的代码等同于
temp = zeros(N)
A = sparse(temp)
只要做
sparse(N,N)
。     
创建一个全零的稀疏矩阵,然后对其进行修改在Matlab中效率极低。 而不是做类似的事情:
   A = sparse(N,N)  % or even A = sparse([],[],[],N,N,N) 
   A(1:N,7) = 1:N
以三重态形式构造矩阵要高效得多。那是, 首先构造列和行索引以及非零条目,然后构造 形成矩阵。例如,
   i = 1:N;
   j = 7*ones(1,N); 
   x = 1:N;
   A = sparse(i,j,x,N,N);
    
我实际上会推荐sparse([],[],[],N,N,N)的完整语法。 如果您知道非零元素的最大数量,则进行预分配很有用,否则您在插入新元素时会得到重新分配。     

要回复问题请先登录注册