【问题标题】:Import data of form <<(index, index) value>> into sparse matrix将<<(index, index) value>>形式的数据导入稀疏矩阵
【发布时间】:2011-08-07 03:37:38
【问题描述】:

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

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

以此类推,我们在左列中获得了矩阵位置的索引,在右列中获得了要到达那里的值。到处搜索并没有找到一个很好且简单的方法来做到这一点,但是我没有大量的 MATLAB 经验,所以我不知道我是否遗漏了一些明显的东西。

【问题讨论】:

    标签: matlab matrix format


    【解决方案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]
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-01
        • 2018-01-19
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 1970-01-01
        • 2014-03-06
        • 2023-04-10
        相关资源
        最近更新 更多