向量之间的比较失败

时间:2015-01-07 20:38:01

标签: octave

我正在为大学课程实施单纯形算法。

代码运行良好,但是当我使用提供的测试问题进行测试时,我得不到正确的结果。

代码中的一行比较了两个向量pMinCzeros(n,1),其中npMinC的维度,以确定结果是否是最优的。

在第二次迭代中,我得到的矢量pMinC = [ 0.00000 4.00000 3.50000 -33.00000 -3.00000 0.00000 0.00000]明显大于零,但算法终止。

代码如下所示:

while(done == false)
   % compute pMinC
   if (sum(pMinC > zeros(n,1)))
      % do stuff
   else
      done = true;
   endif
endwhile

为什么比较先工作然后第二次失败?

2 个答案:

答案 0 :(得分:3)

问题是你正在将n * 1向量与1 * n向量进行比较。在这种情况下,八度音程广播变量(类似于matlabs bsxfun),从而产生矩阵。矩阵之和是一个向量。

使用if any(pMinC>0)解决问题。

答案 1 :(得分:0)

比较是总结逻辑测试的结果,而不是正偏差的总和。这就是你想要的吗?

>> sum(pMinC > zeros(1,7))

ans =

 2

>> pMinC > zeros(1,7)

ans =

 0     1     1     0     0     0     0

>>