【发布时间】:2016-06-01 01:58:44
【问题描述】:
我想做以下事情:
例如,我创建了一个包含来自1:n 的所有可能排列的矩阵
n=4;
L=perms(1:n)';
我得到了一个 4-by-24 矩阵的预期输出:
L =
Columns 1 through 13
4 4 4 4 4 4 3 3 3 3 3 3
3 3 2 2 1 1 4 4 2 2 1 1
2 1 3 1 2 3 2 1 4 1 2 4
1 2 1 3 3 2 1 2 1 4 4 2
Columns 14 through 24
2 2 2 2 2 1 1 1 1 1 1
3 4 4 1 1 3 3 2 2 4 4
1 3 1 4 3 2 4 3 4 2 3
4 1 3 3 4 4 2 4 3 3 2
现在我想将此矩阵用于for 循环的索引:
使用第一列,我想为循环的输入提供以下索引:i=4j=3,2,1。然后为i=3j=2,1。然后为i=2j=1。 i=1 为空
这可以像这样只对第一列进行:
for u=4:-1:1
for v=u-1:-1:1
但不适用于其他列,所以我需要做同样的事情,但使用矩阵 L 的条目,类似于列 i=1 的(它在 MATLB 中不起作用):
u=L(1:4,1)
v=L(u:L(4,1) , 1) %// where u corresponds to L(1,1) then L(2,1) then L(3,1)
(对于所有列,它看起来像:
for i=1:length(L)
for u=L(4*(i-1)+1:4*i)
for v=.. ?
)
这不起作用,因为 MATLAB 获取条目的值,当我写 L(1,1):L(4,1) 时,这并不意味着返回从第一行到第四行的条目,而是从值中返回具有增量 1 的所有数字L(1,1) 到 L(4,1) 的值(这里为空)。
有什么想法吗?提前非常感谢你
【问题讨论】:
-
数组循环需要行向量,尝试循环
L(1:4,1).'(注意转置)。 -
@AndrasDeak 是的,谢谢