将表单<<(索引、索引)值>>的数据导入稀疏矩阵



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

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

等等,我们在左边列有矩阵位置的索引,在右边列有要到那里去的值。搜索周围没有出现一个很好的和简单的方法来做到这一点,但我没有大量的MATLAB经验,所以我不知道我是否错过了一些明显的东西。

可以使用function spconvert

例子:

假设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

您可以尝试使用scanf。下面是一些可以开始的代码:

fid = fopen('sparse.dat', 'rt');
[m n] = fscanf(fid, '(%d,%d) %dn');
fclose(fid);
m = reshape(m, 3, length(m)/3)';
% m should now be:
% [1 2 1; 2, 3, 2]

最新更新