B 是一个 [1x8] 矩阵,也可以认为是如下两半:
B = -1 -1 0 0 0 0 1 1
这里前半部分可以有一个、两个、三个或四个-1
,后半部分应该有相同数量的1
下半场。它应该以线性组合的形式完成。
例如,如果前半部分有两个-1
,则可以将它们放在4中,选择2 = 6
的方式,对它们中的每一个下半场将有 6 种放置两个 1
的方法。所以系统一共有6*6=36种方式。即,如果前半部分有两个 -1
,则 B 有 36 个不同的值。
我该怎么做?
最佳答案
可以先生成所有可能的1和0的排列,然后丢弃多余的。
%# make permutations using dec2bin (start from 17 since it's the first solution)
allB = str2double(num2cell(dec2bin(17:255)));
%# change sign in the first half, then check that the total is ok
allB(:,1:4) = - allB(:,1:4);
allB = allB(sum(allB,2)==0,:);
allB
的每一行都是B
的可能值
关于matlab - 矩阵/向量的线性组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890452/