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

问题描述 投票:0回答:1

我正在使用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);

当整个数据被给出时,我期待这样的情节:expected

但我得到:

plotted

matlab csv filter signal-processing moving-average
1个回答
0
投票

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

把它变成双重解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.