2011-04-17 31 views
2

我有一個純文本數據文件(.dat),其中包含我想導入到MATLAB中的稀疏矩陣信息。它看起來有點像:將表格<<(索引,索引)值>>的數據導入到稀疏矩陣

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

如此反覆,我們已經得到了在左手列矩陣位置索引,和值在正確去那裏。四處搜尋還沒有找到一個簡單的方法來做到這一點,但是我沒有大量的MATLAB經驗,所以我不知道我是否錯過了一些明顯的東西。

回答

1

您可以嘗試使用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] 
+0

看起來太棒了,謝謝! – Kerry 2011-04-18 20:18:51

3

您可以使用功能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