【发布时间】:2017-06-18 15:13:47
【问题描述】:
我有两个不同的行向量 P 和 L。该算法对于每次迭代都有不同的 P 和 L,我的代码应该计算两个行向量在同一位置有多少对应的行向量,例如如果 P 和 L 是:
P=[1,2,2,1,1]
L=[2,2,1,1,1]
答案应该是 2。例如,如果我有另一个 P 和 L,答案是 3,我应该能够将 2 和 3 相加得到 5。
我的代码计算每次迭代的正确答案,但我不知道如何对这些答案求和以获得向量 P 和 L 在所有迭代中对应的总数。
这是我的代码:
i = 1:numel(P);
j = 1:numel(L);
Valuecompared=(P(i) == 1) & (L(j)==1);
a=0;
for k = 1:numel(Valuecompared)
if Valuecompared(k) == 1
a=a+1;
end
end
我在循环内部和外部尝试了sum(a), cumsum(a),索引k 和没有,但它只是给了我相同的答案“a”,而没有添加先前计算的“a”答案。可能是因为它被覆盖并且每次都没有保存?
此外,我似乎无法在算法运行时存储“a”的值,我可以显示它,但如果我有 100 次不方便的迭代,我如何计算所有迭代的总和答案并存储像Atotal这样的一个变量的总和?
【问题讨论】:
-
你猜对了,它每次都会被覆盖。请参阅ch.mathworks.com/matlabcentral/answers/… 无论如何,这似乎是一个你不需要循环的问题。 P 和 L 总是相同的长度吗?
-
@LeanderMoesinger 是的,P 和 L 的长度始终相同。
-
@LeanderMoesinger 我实际上遇到了类似的事情,但我仍然无法得到总和。比较的变量值不断变化,这很好,但我希望能够总结所有答案,因为我不能手动完成。
标签: matlab for-loop machine-learning comparison evaluation