我有一個純文本數據文件(.dat),其中包含我想導入到MATLAB中的稀疏矩陣信息。它看起來有點像:將表格<<(索引,索引)值>>的數據導入到稀疏矩陣
(1,2) 1
(2,3) 2
如此反覆,我們已經得到了在左手列矩陣位置索引,和值在正確去那裏。四處搜尋還沒有找到一個簡單的方法來做到這一點,但是我沒有大量的MATLAB經驗,所以我不知道我是否錯過了一些明顯的東西。
我有一個純文本數據文件(.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]
您可以使用功能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
看起來太棒了,謝謝! – Kerry 2011-04-18 20:18:51