当数据很大时,当我在 n 点移动平均滤波器中增加 n 时,为什么我的信号的峰值数量保持不变?

Why number of peaks of my signal stay same when I increase n in n-point moving average filter when data is big?

我正在使用 MATLAB 查找信号的峰值数。 我正在尝试 绘制使用 N 点移动平均滤波器过滤的信号的峰值数量,N 从 2 到 30。(我还考虑了没有滤波器时的峰值数量已在结果数组的开头应用)我的数据数组(从 csv 导入并且具有介于 0 和 1 之间的双精度值)具有大约 50k 点。当我使用数组切片给出部分数据,即 100、500 或 1000 点时,峰值数量会按预期减少。但是,当我给出全部数据甚至 2000 点时,峰值数量保持不变,为 127。

我更改了提供给过滤器的数据数量以找出发生这种情况的原因。我更改了评论中显示的评论行并尝试了。当少于 1000 个数据点时,给定的图很好。

这是信号 https://www.dropbox.com/s/e1bkcjn5ta5q610/exampleSignal.csv?dl=0

请从第4个元素开始导入到末尾,开头有一些奇怪的数据,我没有拿,VarName1是导入的列向量的名称

numberOfPeaks = zeros(30,1,'int8');

pks = findpeaks(VarName1); % VarName1(1:1000,:)   (when no filter applied)

numberOfPeaks(1) = size(pks,1);


for i=2:30
    h = 1/i*ones(1,i,'double');
    y = filter(h,1,VarName1); % VarName1(1:1000,:)


    numberOfPeaks(i) = size(findpeaks(y),1);
end

plot(1:30,numberOfPeaks);

当给出全部数据时,我希望得到这样的图:

但我得到:

我意识到问题出在我使用的int8上。它最多只能占用 127,这导致我的大结果为 127。

将其转换为 double 即可解决问题。