Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Octave Can';t将稀疏矩阵正确加载到倍频程_Octave - Fatal编程技术网

Octave Can';t将稀疏矩阵正确加载到倍频程

Octave Can';t将稀疏矩阵正确加载到倍频程,octave,Octave,我的任务是将对称正定义稀疏矩阵从加载到GNU倍频程。我需要研究不同的排序算法,比如,但是我不能使用它们,因为矩阵不是以平方的形式存储的 我选择了一个例子 我尝试了不同的.mat文件: load -mat bcsstk17 load -mat-binary bcsstk17 load -6 bcsstk17 load -v6 bcsstk17 load -7 bcsstk17 load -mat4-binary bcsstk17 error: load: can't read binary fil

我的任务是将对称正定义稀疏矩阵从加载到GNU倍频程。我需要研究不同的排序算法,比如,但是我不能使用它们,因为矩阵不是以平方的形式存储的

我选择了一个例子

我尝试了不同的.mat文件:

load -mat bcsstk17
load -mat-binary bcsstk17
load -6 bcsstk17
load -v6 bcsstk17
load -7 bcsstk17
load -mat4-binary bcsstk17
error: load: can't read binary file
load -4 bcsstk17
但是它们都不起作用,因为我的工作区的变量是空的

当我加载矩阵市场格式mtx,加载bcsstk17.mtx时,我得到一个219813x3矩阵

我试过了,但得到的是相同的219813x3矩阵


我做错了什么?

不知道为什么在提供matlab/octave-specific
.mat
格式的情况下尝试加载
.mtx
文件

只需下载bcsstk17.mat文件并加载:

load bcsstk17.mat
然后,您将在工作区中看到一个名为
Problem
的变量,该变量的类型为struct。它包含几个字段,包括一个
a
字段,该字段似乎以稀疏矩阵的形式保存数据。换句话说,您的数据可以作为
Problem.A


您根本不应该为
.mtx
文件而烦恼。但是为了完成,我将解释加载时看到的内容。
.mat
文件是二进制格式。但是,
.mtx
文件似乎是人类可读的格式(即,它包含普通ASCII文本)。特别是,它似乎由一个包含注释的“标题”组成,注释以
%
字符开头, 一行似乎编码了每个维度中稀疏矩阵的大小, 然后它包含“空格分隔”数据,其中每一行大概表示矩阵中的一个元素,三列大概表示该元素的行、列和值

当matlab遇到包含数据(+注释)的ASCII文件时,不管扩展名如何,只要数据看起来像一个有效的2D数字数组,它就会将该文件的数据内容加载到与该文件同名的变量上


显然这不是你想要的。不仅仅是因为第一行将被解释为Nx3矩阵中的正常数据行。换句话说,matlab/octave只是加载一个它认为是基于文本的标准文件,并将它在其中看到的值加载到一个变量上。这里的扩展名
.mtx
与matlab/octave无关,它绝对不会以任何与
.mtx
规范相关的方式解释或解码
.mtx
文件。

谢谢,我没有意识到我正在加载一个结构