【发布时间】:2017-10-25 08:22:12
【问题描述】:
在 Matlab 中创建大小为 n 的 2 步置换矩阵是否有一种轻松的方法?
这意味着我想找到线性运算符L 的矩阵形式,使其作用于
x = [x(1), x(2), ..., x(n)]
通过以下方式:
L*x = [x(1), x(3), ..., x(n-1), x(2),x(4), ..., x(n)] % when n is even
L*x = [x(1), x(3), ..., x(n), x(2), x(4), ..., x(n-1)] % when n is odd
例如对于 n = 4: 矩阵是
[1 0 0 0;
0 0 1 0;
0 1 0 0;
0 0 0 1]
或 n = 5:
[1 0 0 0 0;
0 0 1 0 0;
0 0 0 0 1;
0 1 0 0 0;
0 0 0 1 0]
额外的问题:现在我想要 Labove 的逆运算符形式(答案中的单行语法)。
在矩阵形式中,逆矩阵是L 的矩阵的转置。也是ceil(n/2)步幅排列。
TL;DR 产生输出到ceil(n/2) 步幅排列的最简单方法是什么?
【问题讨论】:
-
我没有投反对票,但这可能部分是由于您编辑了您的问题,因此它现在偏离了原始问题!您的“额外问题”有点模糊和令人困惑,并且(当然)是原始问题的“额外” - 使好的答案(您没有接受)不完整。最好简单地问另一个清晰且描述清楚的问题
标签: matlab matrix permutation matrix-multiplication