【问题标题】:How to export a matrix with indices in Octave?如何在 Octave 中导出带有索引的矩阵?
【发布时间】:2020-08-03 16:06:05
【问题描述】:

假设我有一个矩阵

a = [1, 2, 3; 11, 12, 13; 21, 22, 23]

如何以如下方式保存到txt或csv文件?

行、列、值

1 1 1
1 2 2
1 3 3
2 1 11
2 2 12
2 3 13
3 1 21
3 2 22
3 3 23

【问题讨论】:

    标签: octave file-management


    【解决方案1】:

    您可以使用dlmwrite 命令,使用空格(即' ')作为分隔符,例如:

    octave:1> a = [1, 2, 3; 11, 12, 13; 21, 22, 23]
    a =
        1    2    3
       11   12   13
       21   22   23
    
    octave:2> [Cols, Rows] = ndgrid( 1 : size(a, 2),   1: size(a, 1) );
    octave:3> M = [ Rows(:), Cols(:), a'(:) ];
    octave:4> dlmwrite('out.ssv', M, ' ');
    

    PS。大概您的 a 矩阵中有错字并打算写 a = [1, 2, 3; 11, 12, 13; 21, 22, 23]

    【讨论】:

    • 它说 'ngrid' 功能属于来自 Octave Forge 的控制包,它似乎没有安装在您的系统中。 我在 Ubuntu 18.04 中使用 Octave 4.2.2 .后续版本的 Octave 是否提供 ngrid 函数?
    • 我从 Octave Forge 安装了包控制。现在它说警告:'ngrid' 功能属于 Octave Forge 的控制包,但尚未实现。 那么,此功能是否在 Octave 的更高版本中可用?您使用的是哪个版本的 Octave?
    • @ArchismanPanigrahi ndgrid。不是ngridndgrid 是基本倍频程的标准函数。 nd 代表“N 维”。
    【解决方案2】:

    第 1 列和第 2 列将始终具有相同的模式,而第 3 列只是行的堆叠列,因此以下应该有效。我一步一步把它拆开,但我相信它可以被收紧成更少的行:

    >> a = [1, 2, 3; 11, 12, 13; 21, 22, 23];
    
    >> [r, c] = size(a);
    r =  3
    c =  3
    
    >> col1 = repelem([1:r]',c)
    col1 =
    
       1
       1
       1
       2
       2
       2
       3
       3
       3
    
    >> col2 = repmat([1:c]',r,1)
    col2 = 
       1
       2
       3
       1
       2
       3
       1
       2
       3
    
    >> col3 = a'(:)
    col3 =
    
        1
        2
        3
       11
       12
       13
       21
       22
       23
    
    >> output = [col1, col2, col3]
    output = 
        1    1    1
        1    2    2
        1    3    3
        2    1   11
        2    2   12
        2    3   13
        3    1   21
        3    2   22
        3    3   23
    

    那么有几个选项可以保存它。最简单的可能是:

    >> dlmwrite ('filename.csv', output) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-05
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2012-12-29
      • 2023-03-04
      相关资源
      最近更新 更多