Как экспортировать матрицу с индексами в Octave? - PullRequest
1 голос
/ 03 августа 2020

Предположим, у меня есть матрица

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

Ответы [ 2 ]

4 голосов
/ 03 августа 2020

Вы можете использовать команду 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 = [1, 2, 3; 11, 12, 13; 21, 22, 23]

1 голос
/ 04 августа 2020

Столбцы 1 и 2 всегда будут иметь один и тот же шаблон, а третий столбец представляет собой просто сложенный столбец строк, поэтому следующее должно работать. Я разобрал его шаг за шагом, но уверен, что его можно сократить до меньшего количества строк:

>> 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...