我想用整数分解法把基频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/

10-11 05:46