玩转matlab之如何将矩阵市场(matrix market)下载的矩阵格式转换为matlab稀疏矩阵

矩阵市场收集了很多科学与工程实际问题离散后得到的大型稀疏矩阵,但是为了统一存储方式和提高效率,矩阵市场存储的矩阵格式并不是我们MATLAB可以直接使用的,本文介绍如何将下载的矩阵转化为MATLAB可以直接使用的稀疏矩阵。同时矩阵市场也提供转化为其他语言数据的方式,如Python,C语言、Fortran等等 。

假如我们要查找一个矩阵叫作 fidap036

打开矩阵市场主页

矩阵市场主页网址
如图所示,点击by matrix name 按名字查找。
点击by matrix name
找到自己的矩阵
在这里插入图片描述
这时候,发现有2种格式:
第一种是Matrix Market (.mtx 格式),中间right hand side 是方程组 Ax=b 的右端项b。
第二种是 Harwell—Boeing 即(HB 格式) .rua 格式 。
在这里插入图片描述
注:mtx格式的矩阵就是通常的坐标存储方式,记录所有非零元的行和对应的列,而HB格式是新的存储方式,按照某种压缩原理,记录非零元,简单讲就是HB格式效率更高,同样的矩阵,实验表明使用HB格式的方式比mtx格式节约近30%空间,是最流行的稀疏矩阵存储方式,详情参考矩阵市场主页。

下载两个格式矩阵文件

将两种格式都下载,解压到一个文件夹,例如 E:/work/,如图:
在这里插入图片描述

MATLAB加载矩阵

下面介绍如何加载矩阵
第一种mtx格式使用如下:需要子函数 mmread.m (文末有下载链接),新建一个脚本文件main.m,复制如下代码运行。

clear;clc;
filename = 'fidap036.mtx';
[A,rows,cols,entries,rep,field,symm] = mmread(filename);

如图所示:
在这里插入图片描述
同理,第二种Harwell 格式 (.rua) 使用如下:需要子函数 hb_to_msm(文末有下载链接)

%%  HB to MATLAB matrix
clear;clc;

 filename = 'fidap036.rua';
 A = hb_to_msm ( filename );

于是即可生成我们所需要的MATLAB稀疏矩阵格式。大家可以自己对照网页上面矩阵的性质进行验证,生成的矩阵是否正确。

注意:有的矩阵是对称矩阵,所以加载后得到的它的上三角或者下三角部分,需要自己在进行处理例如:如果得到的是下三角矩阵,那么需要A=A+tril(A,-1);    即,将其上三角部分补上。

附上子函数mmread和hb_to_msm下载网址

mmread.m 下载网址
其下载网页如图所示:
在这里插入图片描述
hb_to_msm.m 下载

提示:使用ctrl+A 和 ctrl+C 复制代码

其下载网页如图所示:
在这里插入图片描述

第一篇博客,欢迎大家多多交流。有问题请与我留言。QQ群:315241287

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值