如果可能的值可以是1
或-1
给出了一系列具有变化长度的系数(在本例中为3):
array: [-1 -1 2]
desired sum: [2]
所以我的看法会是这样的:
-x-y+2z=2
输出:
result:[-1 1 1]
如何在Matlab中完成?我不知道如何做递归。
我在考虑制作类似于锁定选择的东西
1 1 1 1
^
从此处移动并尝试所有组合。值必须为1
或-1
答案 0 :(得分:1)
我会生成所有可能的序列,然后检查它们是否与结果匹配。这应该比递归更快更清晰。
现在,如何生成所有可能的序列 - 从二进制数中获取提示。
要将当前数字转换为二进制数据然后再转换为数组(您需要的其他步骤应该足够清晰):
dec2bin(currentNumber, N); % N is the length of array.
arr = binNum(:) == '1';
matCoeff = -1 + 2 * arr; % This gives 1 on places with 1 and -1 on places with 0.