释放双眼,带上耳机,听听看~!

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

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

打开矩阵市场主页

矩阵市场主页网址

如图所示,点击by matrix name 按名字查找。

MJvyIf.png

找到自己的矩阵

VbiM3q.png

这时候,发现有2种格式:

第一种是Matrix Market (.mtx 格式),中间right hand side 是方程组 Ax=b 的右端项b。

第二种是 Harwell—Boeing 即(HB 格式) .rua 格式 。

RNvyqe.png

注:mtx格式的矩阵就是通常的坐标存储方式,记录所有非零元的行和对应的列,而HB格式是新的存储方式,按照某种压缩原理,记录非零元,简单讲就是HB格式效率更高,同样的矩阵,实验表明使用HB格式的方式比mtx格式节约近30%空间,是最流行的稀疏矩阵存储方式,详情参考矩阵市场主页。

下载两个格式矩阵文件

将两种格式都下载,解压到一个文件夹,例如 E:/work/,如图:

2iYJbe.png

matlab加载矩阵

下面介绍如何加载矩阵

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

clear;clc;

filename = \'fidap036.mtx\';

[A,rows,cols,entries,rep,field,symm] = mmread(filename);

如图所示:

r6be6f.png

同理,第二种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下载网址

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

其下载网页如图所示:

jmI73i.png

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐