Arrays 如何在MATLAB中使用单元阵列生成稀疏矩阵?

Arrays 如何在MATLAB中使用单元阵列生成稀疏矩阵?,arrays,matlab,matrix,sparse-matrix,Arrays,Matlab,Matrix,Sparse Matrix,稀疏矩阵是几乎所有元素都具有相同值(通常为零)的大型矩阵。稀疏矩阵的标准表示法占用大量内存,而有用信息可以用更少的内存捕获。表示稀疏矩阵的一种可能方法是使用单元向量,其第一个元素是表示稀疏矩阵大小的2元素向量。第二个元素是一个标量,指定稀疏矩阵的默认值。单元向量的每个连续元素是一个3元素向量,表示稀疏矩阵中的一个元素,该元素的值不是默认值。这三个元素是行索引、列索引和实际值。编写一个名为sparse2matrix的函数,该函数接受上述单元向量的单个输入,并返回名为matrix的输出参数,即传统形

稀疏矩阵是几乎所有元素都具有相同值(通常为零)的大型矩阵。稀疏矩阵的标准表示法占用大量内存,而有用信息可以用更少的内存捕获。表示稀疏矩阵的一种可能方法是使用单元向量,其第一个元素是表示稀疏矩阵大小的2元素向量。第二个元素是一个标量,指定稀疏矩阵的默认值。单元向量的每个连续元素是一个3元素向量,表示稀疏矩阵中的一个元素,该元素的值不是默认值。这三个元素是行索引、列索引和实际值。编写一个名为sparse2matrix的函数,该函数接受上述单元向量的单个输入,并返回名为matrix的输出参数,即传统形式的矩阵

cellvec={[23],0[123],[22-3]};
矩阵=稀疏矩阵(cellvec)
母体=
0     3     0
0    -3     0
根据问题中的信息:

在向量单元阵列中,它通常是用作稀疏矩阵的第一个向量 矩阵维数

第二个元素是一个标量,指定 稀疏矩阵

其他向量用于指定的位置和值 稀疏矩阵中的元素,即
[i,j,x]
,其中
i
j
是位置 在矩阵中,
x
是元素的值

因此,该计划很简单:

function matrix=sparse2matrix(cellvec);

matrix=zeros(cellvec{1})+cellvec{2};

for i=3:length(cellvec)

      matrix(cellvec{i}(1,1),cellvec{i}(1,2))=cellvec{i}(3);

end