Loading... # Matlab 稀疏矩阵 ![matlab-sparse-matrix.jpg](https://www.colors-wind.net/usr/uploads/2020/05/3531537810.jpg) 稀疏矩阵是指矩阵中零元素远远多于非零元素的矩阵。如果把零元素和非零元素以相同方式存储会浪费内存空间。 ## 矩阵的存储方式 - 完全存储方式 - 按列存储所有元素。 - 使用 `full` 函数将矩阵转化为完全存储。· - 稀疏存储方式 - 只存储非零元素的值和位置(行和列),同样按列存储。 - `sparse(A)` 将矩阵 A 转化为稀疏存储。 - `sparse(m,n)` 直接建立 mxn 的稀疏存储矩阵。 - `sparse(row,cell,value)` 直接建立稀疏矩阵,其中三个参数为等长向量,分别表示矩阵元素的行,列和值。 - `spconvert(A)` 直接建立稀疏矩阵 - `A(i,1)` 表示第i个非零元素所在的行 - `A(i,2)` 表示第i个非零元素所在的列 - `A(i,3)` 表示第i个非零元素的实部 - `A(i,4)` 表示第i个非零元素的虚部 - 若矩阵全是实数,则矩阵只需要有三列 ```matlab >> A = sparse(eye(5)) A = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1 >> B = full(A) B = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 >> whos Name Size Bytes Class Attributes A 5x5 128 double sparse B 5x5 200 double ``` # 有特定结构的稀疏矩阵 - 带状稀疏矩阵 - `[B,d]=spdiags(A)` 从稀疏矩阵 A 中提取全部非零对角线元素赋给矩阵 B,非零对角线位置(第`k`条对角线)赋给向量 d。 - `A=spdiags(B,d,m,n)` 是上一条命令的逆命令,但由于转换过程丢失了一些信息,这里需要两个额外的参数m、n代表原矩阵的行数和列数。 - 稀疏存储单位矩阵 `speye()` 最后修改:2020 年 05 月 11 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏