如何在 Octave 中导出带有索引的矩阵?

How to export a matrix with indices in Octave?

假设我有一个矩阵

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

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

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 = [1, 2, 3; 11, 12, 13; 21, 22, 23]

第 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)