【问题标题】:how to transpose multidimensional (3D) matrix in prolog如何在prolog中转置多维(3D)矩阵
【发布时间】:2016-05-03 10:34:12
【问题描述】:

我想在 Prolog 中转置矩阵。我是 Prolog 的新手,到目前为止我知道如何处理二维矩阵

transpose([], []).
transpose([H|T], Ts) :- transpose(H, [H|T], Ts).

transpose([], _, []).
transpose([_|T1], L, [H1|T2]) :- lfr(L, H1, M), transpose(T1, M, T2).

lfr([], [], []).
lfr([[H3|T4]|R], [H3|T5], [T4|O]) :- lfr(R, T5, O).

但不是更多。我在谷歌上找不到任何东西,所以任何提示或提示将不胜感激。 示例:

输入 [ [ [[1,2,3],[4,5,6] ], [ [7,8,9],[10,11,12] ] ]。

输出 [ [ [1,4],[7,10] ], [ [2,5],[8,11] ], [ [3,6],[9,12] ] ]。

谢谢。

【问题讨论】:

  • 这就像我需要先转置每个部分,然后再转置整个矩阵......但我不知道如何按部分转置它..

标签: matrix prolog transpose


【解决方案1】:

如果您有 2D 矩阵的转置谓词,则可以按以下步骤对 3D 矩阵进行转置:

  1. 转置 3D 矩阵的每个 2D 矩阵元素(您可以为此使用 maplist/2
  2. 将生成的 3D 矩阵转置为列表的 2D 矩阵。

在序言中:

matrix_3d_transposed(Matrix, TransMatrix) :-
    maplist(matrix_2d_transposed, Matrix, TMatrices),
    matrix_2d_transposed(TMatrices, TransMatrix).

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 2018-05-08
    • 2015-02-02
    • 1970-01-01
    • 2017-02-10
    • 2023-03-22
    • 2016-06-12
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多