4.15 稀疏矩阵
4.15.1 稀疏矩阵的存储方式 4.15.2 稀疏矩阵的创建
4.15.2.1 稀疏矩阵创建指令:sparse 4.15.2.2 稀疏带状矩阵创建指令:spdiags
4.15.2.3 外部数据转换为稀疏矩阵的指令:spconvert
【例 4.15.2.3-1】用两种不同方式创建三对角稀疏矩阵。
n=5;SM1=sparse(1:n,1:n,-2*ones(1,n),n,n,n);
SM2=sparse(2:n,1:n-1,ones(1,n-1),n,n,n-1);S1=SM1+SM2+SM2'
e=ones(n,1);S2=spdiags([e,-2*e,e],[-1,0,1],n,n),SF=full(S1) S1 =
(1,1) -2 (2,1) 1 (1,2) 1 (2,2) -2 (3,2) 1 (2,3) 1 (3,3) -2 (4,3) 1 (3,4) 1 (4,4) -2 (5,4) 1 (4,5) 1 (5,5) -2 S2 =
(1,1) -2 (2,1) 1 (1,2) 1 (2,2) -2 (3,2) 1 (2,3) 1 (3,3) -2 (4,3) 1 (3,4) 1 (4,4) -2 (5,4) 1 (4,5) 1 (5,5) -2 SF =
-2 1 0 0 0 1 -2 1 0 0 0 1 -2 1 0 0 0 1 -2 1 0 0 0 1 -2
41
4.15.3 稀疏矩阵的运算 4.15.3.1 基本规则
4.15.3.2 常用指令及应用举例
【例4.15.3.2-1】全元素矩阵、稀疏矩阵、最小排序稀疏矩阵三角分解所需时间的比较。
clear all,n=200; % rand('state',1),randn('state',2) % A=sprandsym(n,0.015,0.1,1); %
subplot(1,2,1),spy(A,'b',10),title('Spy plot of matrix A') subplot(1,2,2),d=symmmd(A); %
spy(A(d,d),'b',10),title('Matrix A with Minimun degree ordering'); B=full(A); % %
format short e
tic, L1=chol(B);t1=toc; % tic, L2=chol(A);t2=toc/t1; % tic, L3=chol(A(d,d));t3=toc/t1; %
disp(' 全元素阵 稀疏矩阵 最小排序阵'),disp([1,t2,t3]) 全元素阵 稀疏矩阵 最小排序阵
1 0 0
图 4.15-1 稀疏结构
42