作为计算数学专业,在对微分方程算法求解时,经常会用到矩阵的运算,特别是稀疏矩阵、对称矩阵和对角矩阵的运算,本篇文章旨在介绍用spdiags函数构建稀疏的三对角、五对角矩阵.
编程计算的目标
编程计算的目标有两点:
- 一是提高运算时间;
- 二是减少内存消耗
本文构建的稀疏的对角矩阵,把非零元素标记储存,去除零元素的储存,是为了保证第二点.
函数的用法
语法
1 | Bout = spdiags(A) |
说明
-
Bout = spdiags(A)从m×n矩阵A中提取非零对角线,并将其作为min(m,n)×p矩阵Bout中的列返回,其中p是非零对角线的数目。 -
[Bout,id] = spdiags(A)还返回A中非零对角线的对角线编号id。Bout的大小为min(m,n)×length(id)。 -
Bout = spdiags(A,d)提取由d指定的A的对角线,并将其作为min(m,n)×length(d)矩阵Bout的列返回。 -
S = spdiags(Bin,d,m,n)通过获取Bin的列并沿d指定的对角线放置它们,来创建一个m×n稀疏矩阵S。 -
S = spdiags(Bin,d,A)将d指定的A中的对角线替换为Bin的列。
实例
构造一个稀疏的8×8三对角矩阵(对角元素依次是2,5,6)
1 | e1=2*ones(8,1); %生成一个8×1向量,元素全为2 |
运行结果如下:

构造一个稀疏的8×8五对角矩阵(对角元素依次是3,2,1,2,3)
1 | e1=3*ones(8,1); %生成一个8×1向量,元素全为3 |
运行结果如下:
