如何镜像矩阵的一个维度

How can I mirror a matrix about one of its dimensions?

本文关键字:一个 何镜像 镜像      更新时间:2023-10-16

我使用的是特征,但由于特征使用基本的数学运算符,这基本上只是一个数学问题。这是我所追求的伪代码:

    [1 2 3]
A = [4 5 6]
    [7 8 9]
            [7 8 9]
A.flipv() = [4 5 6]
            [1 2 3]

我怎么能在本征中实现这样的事情?(我使用的是 3.2 版)

编辑:我想我想在这里做的是将顶部行与底部行交换(.topRows().bottomRows().swap()的某种组合?

如果你想要一个一般的翻转,即,不仅仅是一个 3x3 矩阵,那么reverse()函数就是你要找的。特别是A.colwise().reverse()将反转每一列,从而进行垂直翻转。对于水平翻转:A.rowwise().reverse() .

您只需要乘以另一个 3x3 矩阵,在正确的位置使用零和一。我认为你可以从那里用笔和纸来解决它。我会给你一个提示:解决方案中只有 3 个。

..好吧:

[0 0 1]
[0 1 0]
[1 0 0]

我可以给你两个可能的解决方案:

1.

如果矩阵中有 n 行,则可以执行以下操作:对于前 n/2 行中的任何元素,假设它位于第 i 行和第 j 列上,并且我们索引 0 中的行和列,然后您可以将 M[i, j] 与 M[n - 1 - i, j] 交换,结果将如描述的那样。

阿拉伯数字。

第二个解决方案是Johan Lundberg的解决方案:

让我们考虑矩阵

0 0 1
0 1 0
1 0 0

I x M 结果是您想要的矩阵。例如:

0 0 1   1 2 3   7 8 9
0 1 0 x 4 5 6 = 4 5 6
1 0 0   7 8 9   1 2 3