【MATLAB】稀疏矩阵(含有大量0元素的矩阵)
1、稀疏矩阵的储存方式
对于稀疏矩阵,MATLAB仅储存矩阵所有非零元素的值及其位置(行号和列号)。
2、稀疏矩阵的生成
1)利用sparse函数从满矩阵转换得到稀疏矩阵
函数名称 | 表示意义 |
sparse(A) | 由非零元素和下标建立稀疏矩阵A。如果A已是一个稀疏矩阵,则返回A本身。 |
sparse(u,v,a) | 生成大小为max(u) x max(v)的稀疏矩阵。其中u和v是整数向量,a是实数或者复数向量 |
sparse(u,v,a,m,n) | 生成m x n 的一个稀疏矩阵,(ui,vi)对应值ai,向量u,v和a的长度必须一样 |
spconvert(D) | 生成一个稀疏矩阵D。D共有三列,第一列为行下表,第二列为列下表,第三列为元素值 |
full(S) | 将稀疏矩阵S转换为满矩阵 |
>> clear all
>> x=[1 2 3]x =1 2 3>> y=[4 5 6]y =4 5 6>> sparse(x,y,7)ans =(1,4) 7(2,5) 7(3,6) 7>> S=sparse([1,2,3,4,5],[2,1,4,6,2],[10,3,-2,-5,1],10,12)S =(2,1) 3(1,2) 10(5,2) 1(3,4) -2(4,6) -5>> A=full(S)A =0 10 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 00 0 0 -2 0 0 0 0 0 0 0 00 0 0 0 0 -5 0 0 0 0 0 00 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0
nnz(S):查看非零元素的个数
nonzeros(S):非零元素的值
nzmax(S):获取储存非零元素的空间长度
spy(S):对稀疏矩阵的非零元素进行图形化显示
2)利用一些特定函数创建包括单位稀疏矩阵在内的特殊稀疏矩阵
函数 | d调用格式 | m描述 |
speye | S=speye(m,n) | 创建单位稀疏矩阵 |
spones | S=spones(X) | 创建非零元素为1的稀疏矩阵 |
sprand | S=sprand(X) | 创建非零元素为均匀分布的随机数稀疏矩阵 |
sprandn | S=sprandn(X) | 创建非零元素为高斯分布的随机数的稀疏矩阵 |
sprandsym | S=sprandsym(X) | 创建非零元素为高斯分布的随机数的对称稀疏矩阵 |
spdiags | S=spdiags(X) | 创建对角稀疏矩阵 |
spalloc | spalloc(X) |
为稀疏矩阵分配空间 |
>> A=speye(5)A =(1,1) 1(2,2) 1(3,3) 1(4,4) 1(5,5) 1>> B=speye(5,6)B =(1,1) 1(2,2) 1(3,3) 1(4,4) 1(5,5) 1>> a=full(A)a =1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1>> b=full(B)b =1 0 0 0 0 00 1 0 0 0 00 0 1 0 0 00 0 0 1 0 00 0 0 0 1 0>> C=spones(a)C =(1,1) 1(2,2) 1(3,3) 1(4,4) 1(5,5) 1
3、稀疏矩阵的运算
满矩阵的四则运算对稀疏矩阵同样有效
对单个稀疏矩阵的输入,大部分函数输出的结果都是稀疏矩阵
对多个矩阵的输入,如果至少有一个矩阵式满矩阵,那么,大部分结果输出的是满矩阵
对矩阵的加减乘除运算,只要有一个是满矩阵,输出结果是满矩阵
稀疏矩阵的数乘是稀疏矩阵
稀疏矩阵的幂是稀疏矩阵
c创建非零元素为高斯分布的随机数的稀疏矩阵 |
【MATLAB】稀疏矩阵(含有大量0元素的矩阵)相关推荐
- matlab中如何从一个矩阵的行列中找出 0 元素的个数 或者位置 并作为判断条件
问题描述: 2维数组A[2,100],要求根据A(1,:)中的非零元素的索引值来对数组做相应的处理! 在网上可以查阅到 find()函数的各种用法,也可以查询到 isnan()函数的用法,但是没有 ...
- python 矩阵除法_请问matlab编程,怎样让两个矩阵对应元素相除?
展开全部 >> clear >> A=[3 6 9]; >> B=[1 2 3]; >> C=A./B C = 3 3 3 注: MATLAB在矩阵的运 ...
- MATLAB运用all函数剔除0元素
大家好,最近在做一个数学仿真,需要对一个行向量进行剔除0元素的处理,因此学习了all函数和any函数的使用方法,希望能帮到遇到相同问题的朋友. 首先介绍all函数和any函数的使用,然后给出实例帮助大 ...
- matlab出现索引超出数组元素的数目(0)怎么解决
Matlab 出现索引超出数组元素的数目 (0) 通常表示你试图访问一个空数组或者超出数组索引的范围.以下是一些可能的解决方案: 检查你的代码,确保没有在程序中使用空数组. 检查数组的索引是否正确.例 ...
- 如何用三元组表表示下列稀疏矩阵_稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。...
问题:稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素. 答案:对 更多相关问题 (本小题满分10分)已知抛物线的焦点坐标是F(0,-2), 求它的标准方程. I bought a dr ...
- matlab 合并相同元素,matlab中删除相邻相同元素
matlab中删除相邻相同元素 关注:126 答案:2 手机版 解决时间 2021-03-06 01:51 提问者你說.你愛我 2021-03-05 20:49 A=[zx as cd cd re ...
- MATLAB程序设计与应用 3.1 特殊矩阵
MATLAB程序设计与应用 文章目录 MATLAB程序设计与应用 3. 第3章 MATLAB矩阵处理 3.1 特殊矩阵 3.1.1 通用的特殊矩阵 3.1.2 用于专门学科的特殊矩阵 3. 第3章 M ...
- MATLAB快速入门(二):矩阵
矩阵 目录 矩阵 1.冒号表达式 2.矩阵元素的引用 3.矩阵的运算 3.1算术运算 3.2逻辑运算 4.特殊矩阵 5.矩阵变换 5.1对角阵 5.2三角阵 5.3矩阵旋转 5.4稀疏矩阵 6.矩阵求 ...
- 用MATLAB实现plu分解,编制计算给定矩阵 A 的 LU 分解和 PLU 分解的通用程序
用VB编写一个程序,计算出给定的10*10矩阵(存放在二维数组A中)每行元素的最大值和每列元素的最小值 ModuleModule1SubMain()DimA(,)AsInteger={{1,2,3,4 ...
最新文章
- 270个开源项目,总计24w星,帮你快速找代码
- 机器学习导论(张志华):渐近性质
- T-SQL Recipes之Customized Database Objects
- 04 breakcontinue
- linux修改文件没有备份文件,linux文件或目录权限修改后如何恢复(备份了权限就能恢复)...
- 【转】.net框架读书笔记---CLR内存管理\垃圾收集(一)
- Android10弹出截屏对话框,Android一个美丽而聪明的警告对话框SweetAlert
- 作者:李超(1988-),男,上海交通大学硕士生,主要研究方向为大数据网络。...
- centOS 6.4 vsftpd 500 illegal port command
- 余承东嘲讽苹果:iPhone 12落后华为Mate40两代
- echarts(五)高级篇(多坐标轴、复杂多坐标轴)
- win10一直卡在欢迎界面进不去怎么办
- 基于vueJs框架的翻页组件
- RT_Thread自问自答
- echarts html ppt,PPT美化之echarts
- oracle公共同义词查找,[Oracle]同义词(synonym)
- Spring 工作原理
- gregorian(格里高力)历转换公历
- 面试笔试算法-搜索综合问题
- Git ssh 下载设置
热门文章
- 树莓派实现人脸识别需要做的那些事
- 6.2 sql安全性
- Android5.1.1源码 - zygote fork出的子进程如何权限降级
- 生成验证码点击可刷新
- java获取pdf文件的总页数
- 懂点 Nginx 如何实现反向代理与负载均衡,是面试加分项
- Machine Learning Algorithm
- 电路设计中电阻电容电感的选择原则
- 2014年秋广州华师在线计算机的作业答案,18秋华师《C语言程序设计B》在线作业-4辅导资料...
- Jboss解决只能通过localhost访问而不能使用IP访问项目的问题