有人可以告诉我为什么这个Octave算法不执行最后一次迭代,其中i = 4和j = 2?它似乎受内部for循环中的中断条件的影响,但这不应该影响最后一次迭代。八度算法循环迭代
x = [2, 3, 4];
h = [1, 2];
y = [0, 0, 0, 0];
for i = 1:4
for j = 1:2
printf("i = %d, j = %d\n", i, j);
if((i-j < 0) || (i-j > 2)) break; endif
y(i) = y(i) + h(j) * x(i-j+1);
endfor
endfor
我测试过它在我的Debian系统上,它停在我= 4和j = 1的输出是:
i = 1, j = 1
i = 1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2
i = 4, j = 1
这个答案非常明确和有帮助。伟大的工作和+1的替代方式做到这一点。先生,祝你好运!不幸的是,我没有足够的积分来投票。 – 2014-10-09 11:08:20