MATLAB之稀疏矩阵 您所在的位置:网站首页 matlab怎么生成复数向量 MATLAB之稀疏矩阵

MATLAB之稀疏矩阵

2023-11-17 21:39| 来源: 网络整理| 查看: 265

1、稀疏矩阵定义及存储 稀疏矩阵即含0较多的矩阵。 MATLAB为了节省内存空间,对与实数稀疏矩阵采用3个内部数组来保存非零元素及其对应的位置。 对与复数稀疏矩阵,采用第4个内部数组保存非0复数的虚部。 在这里插入图片描述 说明:M_full和M_sparse其实是同一个矩阵,但是内存却相差了一万倍,可怕。

2、稀疏矩阵的创建 MATLAB不会自己创建稀疏矩阵。一般由用户根据商来确定是否要采用稀疏矩阵。 商也叫密度:非零个数比矩阵总体元素数。密度越小,用稀疏矩阵越有利。 spares()将矩阵变成稀疏矩阵,full()则将稀疏矩阵变成一般矩阵。 在这里插入图片描述 2.1 直接创建稀疏矩阵 使用spares(i,j,s,m,n)函数,i,j分别是行列向量,s为非零值向量,m,n为行列数。在这里插入图片描述 2.2 对角元素中创建稀疏矩阵 函数spdiags(B,d,m,n),B矩阵中的数作为值,d向量作为指定m*n矩阵的对角线 如: b=[1 2 3;4 5 6;7 8 9;10 11 12] spdiags(b,[-3 0 2],7,4) 在这里插入图片描述 2.3 从外部文件导入稀疏矩阵 1.用文本创建一个三列或四列(复数)的.dat文件 2.将该文件放在当前MATLAB工作目录下 3.load name.dat %将文件导入 4.使用函数spconvert(name),将其转换为稀疏矩阵。

3 稀疏矩阵运算原则 在这里插入图片描述

4 稀疏矩阵的交换与重新排序 4.1、稀疏矩阵的行交换与列交换有以下两种方法 1、有交换矩阵P,对稀疏矩阵S进行行行交换,可以表示为PS,进行列交换可以表示为PS’ 2、有一个交换矢量p,p为一个矢量(1到n的自然数的排列,如p=[1 2 4 3]),对稀疏矩阵的行行交换可以表示为S(p,:),列交换可以表示为S(:,p)。 注意:p=[1 3 2 4],所以是2 3 行进行交换 也可以对矩阵S的某一行进行列交换(S(n,p)),或对某一列进行行行交换(S(p,n))。注意返回的是向量。 注意返回的是向量 对稀疏矩阵的行行交换或列列交换,返回的仍然是稀疏矩阵。交换方法是与一般矩阵相同。 4.2 对稀疏矩阵的列进行重新排序 好处:有时可以使矩形的分解速度更快。 方法:最简单的方法是根据矩阵列中非零元素的个数对列进行排序。使用方法colperm,该方法接收一个矩阵,计算矩阵每一列的非零元素的个数,按非零元素个数从小到大进行排列以后,返回各列的顺序,返回的就是交换矢量。 如:S矩阵,每一列的非零元素的个数分别为 2 2 3 2则返回p=[1 2 4 3] 再:B=S(:,p)%对矩阵S按非零元的个数升序排列。 在这里插入图片描述

5 稀疏矩阵视图 MATLAB提供了函数spy,用于观察稀疏矩阵非零元素的分布视图。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有