【关于窗口移动求和的两种计算方法】

窗口移动计算方法

例子


在很多算法中都会涉及到窗口滑动,比如基于新息序列更新的自适应卡尔曼滤波器算法中便会使用到。

已知一个数列:OCV = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15],定义窗口长度为5,每次滑动一个数位,编写程序求Prk。以MATLAB为例,有如下两个方法,直接看程序。

方法1

matlab 复制代码
OCV                  = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15];
L                    = 1;
n                    = 5;
S                    = 0;
ts                   = length(OCV);
Error_x              = zeros(1,n);
for i                = 1:1:ts
if i                 <= n
        Error_x(1,i) = OCV(i);
        S            = S + Error_x(1,i);
        Prk          = S/i;
else
    S                = S - Error_x(1,L);
    Error_x(1,L)     = OCV(i);
    S                = S + Error_x(1,L);
    L                = L+1;
    if  L            > n
        L            = 1;
    end  
    Prk              = S/n;
end
a                    = Prk
end

方法2

matlab 复制代码
OCV                  = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15];
n                    = 5;
S                    = 0;
ts                   = length(OCV);
Error_x              = zeros(1,n);
for i                = 1:1:ts
if i                 <= n
        Error_x(1,i) = OCV(i);
        S            = S + Error_x(1,i);
        Prk          = S/i;
else
    S                = 0;
    for     j        = 1:1:(n-1)
        Error_x(1,j) = Error_x(1,j+1);
        S            = S + Error_x(1,j);
    end
    Error_x(1,n)     = OCV(i);
    S                = S + Error_x(1,n);
    Prk              = S/n;
    
end
a                    = Prk
end

运行结果:

相关推荐
欧阳小猜2 小时前
深度学习②【优化算法(重点!)、数据获取与模型训练全解析】
人工智能·深度学习·算法
小欣加油2 小时前
leetcode 904 水果成篮
c++·算法·leetcode
有Li2 小时前
CXR-LT 2024:一场关于基于胸部X线的长尾、多标签和零样本疾病分类的MICCAI挑战赛|文献速递-深度学习人工智能医疗图像
论文阅读·人工智能·算法·医学生
君万2 小时前
【LeetCode每日一题】56. 合并区间
算法·leetcode·golang
墩墩同学2 小时前
【LeetCode题解】LeetCode 287. 寻找重复数
算法·leetcode·二分查找
小南家的青蛙3 小时前
LeetCode第55题 - 跳跃游戏
算法·leetcode·职场和发展
啊我不会诶3 小时前
CF每日4题(1500-1700)
c++·学习·算法
shuououo4 小时前
集成算法学习笔记
笔记·学习·算法
呼啸长风5 小时前
漫谈散列函数
算法
NAGNIP5 小时前
彻底搞懂 RoPE:位置编码的新范式
算法