我想用整数分解法把基频F(80000hz)降低任意分数。
假设使用频率F调用新的_sample()函数,然后我可以使用下面的代码将采样率降低到40000Hz。
i = 0; // global counter
new_sample(value){
if(i % 2 == 0){
add_sample_to_buffer(value);
}else{
// skip sample
}
i++;
}
如果我想将采样率降低1.6到50000赫兹的系数怎么办?
正如Clifford指出的那样:我想在不改变频率的情况下改变采样率。基本上我想通过实时跳过一些样本来对信号进行欠采样。
附笔。:
我知道预分频器和后分频器通常用来降低频率。我不知道他们是否允许将频率降低一小部分。
最佳答案
试试这个:
unsigned Nanoseconds = 0; // global counter
void new_sample(value){
Nanoseconds += 12500; // interval between calls at 80000
if(Nanoseconds>20000){
Nanoseconds-=20000;
add_sample_to_buffer(value);
}else{
// skip sample
}
}
1秒内
Nanoseconds
将增加80000倍,增加12500倍,等于1E9,减少50000倍,减少20000倍。关于c - 如何使用整数除法降低采样率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48852231/