如何创建动态平均值? (不知道怎么称呼它)

时间:2016-12-14 20:46:31

标签: matlab

我有10000x1矩阵。我需要找到每种情况下包含的信息百分比。这样做的方法是制作另一个包含剩余单元格总和的矩阵。

示例:

% info is a 10000x1
% info_n contains percentages of information.


info_n = zeros([10000 1]);
info_n(1)= info(1)                 /sum(info);
info_n(2)=(info(1)+info(2))        /sum(info);
info_n(3)=(info(1)+info(2)+info(3))/sum(info);

我需要这样做,但一直到info_n(10000)。

到目前为止,我试过这个:

for i = 1:10000

info_n(i)=(info(i))/sum(info);   

end

但我想不出添加以前信息的方法。谢谢你的帮助!

1 个答案:

答案 0 :(得分:7)

您可以使用cumsum("累积金额")执行此任务:

someValue
编辑:@ LuisMendo的评论激起了我的好奇心。如果向量的长度info_n = cumsum(info)/sum(info); 低于大约N,那么看起来你实际上通过使用他的方法获得了一些东西但是之后的优势下降了。这是因为2^15可能需要cumsum,但O(N^2)只需要sum时间。

在左侧,您可以看到时间以及两种方法绘制的时间与大小对数的比率。在右侧,您可以看到实际的绝对时间差异,这取决于当前正在运行的其他内容:

enter image description here

测试脚本:

O(N)