【发布时间】:2013-10-14 08:18:37
【问题描述】:
我不是信号处理方面的专家。我正在使用 c++ 对一维信号进行简单处理。我真的很想知道如何确定具有最高过零率(最高频率!)的部分。有没有简单的方法或方法来告诉这部分的开始和结束。
This image说明我信号的形式,this image是我需要做的(开始和结束两个索引)
已编辑:
其实我对开头和结尾的宽度一无所知,它是如此多变。 我可以计算过零的数量,但我不知道如何定义它的范围
double calculateZC(vector<double> signals){
int ZC_counter=0;
int size=signals.size();
for (int i=0; i<size-1; i++){
if((signals[i]>=0 && signals[i+1]<0) || (signals[i]<0 && signals[i+1]>=0)){
ZC_counter++;
}
}
return ZC_counter;
}
【问题讨论】:
-
我不确定我是否理解你。我认为首先你需要选择一个范围来检查,从 0 到 10、10 到 20 等等......我在照片中看到的两个红色条的“宽度”。当您知道该宽度时,您必须在每个“范围”中检查有多少部分完成了 f(a)>0 和 f(b)0 和 f(1 )
-
过零可疑部分的范围如此多变。我不知道它的宽度。如果我将它分成 4 个或更多子部分,我不确定是否找到合适的部分,它可以在两个相邻的子部分中找到
标签: c++ image-processing signal-processing