2011-12-31 8 views

ответ

14

Я знаю, что уже поздно в игре, но для чего это стоит, есть более простой способ.

my_matrix : matrix ([a, b, c], [d, e, f]); 
my_list : args (my_matrix); 
=> [[a, b, c], [d, e, f]] 
+0

Спасибо. Кажется, работает :-). –

+1

@Grzegorz Можете ли вы перенести галочку в ответ Роберта, поскольку это, кажется, более разумный способ делать что-то. – Simon

+1

@Simon Справедливая точка - Просто сделал. Однако я не могу вспомнить, почему, потому что я писал более длинный скрипт Maxima, в моем случае ваше решение работало лучше или было более удобным. В любом случае - тик перемещен. Спасибо вам обоим за помощь, Cheers! –

6

Я далек от эксперта Maxima, но с you asked me to look at this question, вот что я получил после быстрого просмотра documentation.

Во-первых, глядя на documentation on matrices, уступил только один способ превращения матриц в списки, который составляет list_matrix_entries. Однако это возвращает плоский список записей. Чтобы получить структуру списка вложенных списков, выполните следующие действия:

DataL : [[1, 2], [2, 4], [3, 6], [4, 8]]; /* Using your example list */ 
DataM : apply('matrix, DataL);    /* and matrix    */ 

DataML : makelist(list_matrix_entries(row(DataM, i)), i, 1, 4); 
is(DataML = DataL); /* true */ 

Это неудобно и, вероятно, неэффективно. Используя базовое лисповское структуру Maxima (и аналогию с Mathematica, который я больше знаком с), вы можете проверить глава DataL и DataM использование part:

part(DataL, 0); /* [  */ 
part(DataM, 0); /* matrix */ 

Тогда для преобразования между этими двумя структурами, вы можете использовать substpart

is(substpart(matrix, DataL, 0) = DataM); /* true */ 
is(substpart("[", DataM, 0) = DataL); /* true */ 

Использование substpart на уровне 0 почти такой же, как с помощью apply, за исключением того, что работает на более чем просто список.

+0

Спасибо @Simon. Ваше решение отлично работает. Я продвигался вперед и назад без каких-либо успехов. Поскольку я использую метод наименьших квадратов и несколько других, работающих на разных типах (некоторые ограничивают матрицу, а другие - в списках), двусторонняя конверсия - большая помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^