我关于stackoverflow的第一个问题!标题含糊,让我详细说明:我有一个 NxN 下三角逻辑矩阵
N = 10 % for example
L = tril(true(N),-1)
L =
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 0 0
1 1 1 1 1 1 1 1 1 0
对角线以下所有为真。对于 am=2^pa 2 的幂,我想得到 m NxN 下三角逻辑矩阵 L_1, ..., L_m 使得 L_i 的每一列都包含第 i 个 1/m-th(四舍五入)数L 中相应列中的 Trues。一个结果是 \sum_i(L_i) == L 再次。
例如,对于 m = 2,我知道
L_2 = L(:,ceil((N:2*N-1)/2))
L_2 =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 0
L_1 = L - L_2
L_1 =
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0
0 1 1 1 1 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
可以解决问题,但是这个技巧不能推广到 m 的 2 的更高幂。对于一般 N 和 m = 2^p,任何想法如何合理快速地做到这一点?
(上下文:L 的每一列都是二等分算法的逻辑索引。m = 2^p 的每个下一个幂 p 对应于二等分算法的更深层次)