【发布时间】:2015-01-11 02:12:58
【问题描述】:
在我的脚本中,我生成了一个矩阵,其中每一列至少与另一列耦合。例如,第 1 列与第 2 列耦合,第 3 列与第 4 列耦合,等等……但我也可以将第 3 列与第 3 列或第 4 列与第 4 列或任何其他数字耦合。
目前这只是一个图像,但我想将耦合的列移动到自己的行上,以便我可以使用 any() 或 sum() 轻松地将它们混合。
这个例子会更清楚:
A = reshape(1:12, 3, []) % A is the matrix I start with, this reshape is OK
A =
1 4 7 10
2 5 8 11
3 6 9 12
reshape(A, [], 2) % this reshape is not OK
ans =
1 7
2 8
3 9
4 10
5 11
6 12
但是,我希望答案是:
ans =
1 4
2 5
3 6
7 10
8 11
9 12
正如我所说,此示例仅适用于 2 列,但在我的用例中,我还需要支持任意数量的列对。这里有 3 列:
B = reshape(1:18, 3, [])
B =
1 4 7 10 13 16
2 5 8 11 14 17
3 6 9 12 15 18
reshape(B, [], 3)
ans =
1 7 13
2 8 14
3 9 15
4 10 16
5 11 17
6 12 18
我想要什么:
ans =
1 4 7
2 5 8
3 6 9
10 13 16
11 14 17
12 15 18
有没有办法以矢量化的方式做到这一点?
【问题讨论】:
-
This 可能会有所帮助
标签: matlab octave reshape tiling