Matlab 导入表单的数据<&书信电报;(索引,索引)值>&燃气轮机;转化为稀疏矩阵

Matlab 导入表单的数据<&书信电报;(索引,索引)值>&燃气轮机;转化为稀疏矩阵,matlab,matrix,format,Matlab,Matrix,Format,我有一个包含稀疏矩阵信息的纯文本数据文件(.dat),我想将其导入MATLAB。它看起来有点像: (1,2) 1 (2,3) 2 依此类推,我们在左边列中得到了矩阵位置的索引,在右边得到了它的值。四处搜索并没有找到一种简单易行的方法,但我对MATLAB没有太多的经验,所以我不知道我是否遗漏了一些明显的东西。你可以尝试使用scanf。以下是一些代码: fid = fopen('sparse.dat', 'rt'); [m n] = fscanf(fid, '(%d,%d) %

我有一个包含稀疏矩阵信息的纯文本数据文件(.dat),我想将其导入MATLAB。它看起来有点像:

(1,2)    1    
(2,3)    2

依此类推,我们在左边列中得到了矩阵位置的索引,在右边得到了它的值。四处搜索并没有找到一种简单易行的方法,但我对MATLAB没有太多的经验,所以我不知道我是否遗漏了一些明显的东西。

你可以尝试使用
scanf
。以下是一些代码:

fid = fopen('sparse.dat', 'rt');
[m n] = fscanf(fid, '(%d,%d) %d\n');
fclose(fid);
m = reshape(m, 3, length(m)/3)';
% m should now be:
% [1 2 1; 2, 3, 2]
你可以使用这个函数

示例:

假设ASCII文件uphill.dat包含

1    1    1.000000000000000
1    2    0.500000000000000
2    2    0.333333333333333
1    3    0.333333333333333
2    3    0.250000000000000
3    3    0.200000000000000
1    4    0.250000000000000
2    4    0.200000000000000
3    4    0.166666666666667
4    4    0.142857142857143
4    4    0.000000000000000
然后是声明

load uphill.dat    
H = spconvert(uphill)

H =

   (1,1)       1.0000
   (1,2)       0.5000
   (2,2)       0.3333
   (1,3)       0.3333
   (2,3)       0.2500
   (3,3)       0.2000
   (1,4)       0.2500
   (2,4)       0.2000
   (3,4)       0.1667
   (4,4)       0.1429