我有两个不同的行向量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
?
答案 0 :(得分:0)
您必须存储每个循环中的a
。不幸的是,您没有显示完整的循环,因此我不知道您正在迭代哪个变量。但是我们假设它是q
。然后你必须在循环外定义a
,例如与
a = zeros(1,niter); % niter = number of times you run the loop
然后你必须用
之类的东西替换最后一行if Valuecompared(k) == 1
a(q)=a(q)+1;
end
循环完成后,您可以使用sum(a)
或者你可以将a=0;
移到循环之外,然后你甚至不必再拿这笔钱了。
有点offtopic,但你可以用
替换到目前为止显示的所有代码a = sum(P==1 & L==1)
完全一样。