我正在尝试构建一个Hsiao奇偶校验矩阵。我想构建一个具有Hsiao's paper中所述属性的矩阵。构建矩阵的步骤之一是
可以从
nchoosek(r,3)
权重 -3
列中选择k
列。这里,r
和k
分别是校验位和数据位的数量。此外,完成以下操作(nchoosek(r,3) >= k
,其中k == No. of data bits
)。
在Matlab中,我能够使用以下内容获得包含所有权重 - 3
列组合的矩阵:
unique(perms([1,1,1,0,0,0]) # For a (22,16) code.
然而,优化逻辑深度的另一个步骤是确保当我们选择k
列时,我们应该选择它们,使得每行中的1个相同的数量接近平均值(转换为每个校验位必须执行的XOR操作数。)
现在,有没有办法指定从整个矩阵的矩阵中选择列的约束?也就是说,Octave / Matlab有没有办法指定像
这样的条件选择
k
列,使ones(rowi)
的数量大约等于ones(rowj)
的数量i != j
)##或者我可以指定可容忍的差异。
示例
说,我有以下五列:
(1 0 0), (1 0 1), (0 1 0), (1 1 0), (0 0 1)
并说我必须选择k=2
列,我可以选择(1 1 0)
和(0 0 1)
(我也可以选择(1 0 1)
和(0 1 0)
,但不是(1 0 0)
和(1 0 1)
)满足上述条件。
编辑1:我知道我可以做类似于Peter Norvig Sudoku solver page所做的事情。只是希望在Octave / Matlab中可能有一种惯用的方法来实现这一点,或者利用我可能缺少的任何属性。否则,我将不得不卷起袖子并开始自己实施约束传播引擎。