我在Maxima中通过以下方式将列表转换为矩阵:
DataL : [ [1,2], [2,4], [3,6], [4,8] ];
DataM: apply('matrix,DataL);
如何以另一种方式实现? 如何将给定的矩阵DataM转换为列表DataL?
我在Maxima中通过以下方式将列表转换为矩阵:
DataL : [ [1,2], [2,4], [3,6], [4,8] ];
DataM: apply('matrix,DataL);
如何以另一种方式实现? 如何将给定的矩阵DataM转换为列表DataL?
我知道现在可能有点晚了,但是说句实话,还有一种更简单的方法。
my_matrix : matrix ([a, b, c], [d, e, f]);
my_list : args (my_matrix);
=> [[a, b, c], [d, e, f]]
我远非Maxima专家,但既然你要求我看这个问题,在快速查阅文档后,以下是我的发现。
首先,查看矩阵文档只提供了一种将矩阵转换为列表的方法,即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 */
DataL
和DataM
的头部。请注意保留HTML标签,但不要添加解释。part(DataL, 0); /* [ */
part(DataM, 0); /* matrix */
is(substpart(matrix, DataL, 0) = DataM); /* true */
is(substpart( "[", DataM, 0) = DataL); /* true */
在级别为0
使用substpart
与使用apply
几乎相同,除了它适用于更多的内容,而不仅仅是列表。