Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用整数除法降低采样率?_C_Signals_Signal Processing_Frequency - Fatal编程技术网

C 如何使用整数除法降低采样率?

C 如何使用整数除法降低采样率?,c,signals,signal-processing,frequency,C,Signals,Signal Processing,Frequency,我想只使用整数除法将基频F(80000 Hz)减少任意分数 假设使用频率F调用新的_sample()函数。然后我可以使用下面的代码将采样率降低到40000 Hz i = 0; // global counter new_sample(value){ if(i % 2 == 0){ add_sample_to_buffer(value); }else{ // skip sample } i++; } 如果我想将采样率降低1.6倍至5

我想只使用整数除法将基频F(80000 Hz)减少任意分数

假设使用频率F调用新的_sample()函数。然后我可以使用下面的代码将采样率降低到40000 Hz

i = 0; // global counter
new_sample(value){
    if(i % 2 == 0){
        add_sample_to_buffer(value);
    }else{
        // skip sample
    }
    i++;
}
如果我想将采样率降低1.6倍至50000 Hz,该怎么办

正如Clifford所指出的:我想在不改变频率的情况下改变采样率。基本上,我想通过跳过一些实时采样来降低信号的采样率

p、 s: 我知道预分频器和后分频器通常用于降低频率。我不知道他们是否允许将频率降低一小部分。

试试这个:

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
    }
}

在一秒钟内,
纳秒
将增加80000倍,增加12500倍,等于1E9,并将减少50000倍,减少20000倍

如果要更改信号的采样率,而不更改信号内容的绝对位置,则需要执行信号处理中称为“抽取”的操作。如果你想了解它,你可能希望阅读这篇非常密集的大学讲座:。简而言之,您必须执行一些过滤、一些抽取以及一些插值。这里有更简单的解释:,它确实有一个指向scopeFIR免费工具的链接,该工具包括抽取相位滤波器以及源代码。大量阅读,我知道…

不清楚你在问什么。如果您知道所需信号的确切频率,则无需修改其他信号的频率-您可以直接生成该频率。我怀疑你想做的和你描述的事实上不是一回事。您是否希望在不更改频率的情况下更改采样率?通过跳过每一个其他采样,您将在以相同采样率重放时使频率加倍。看起来您实际上打算在不改变信号频率的情况下降低采样率。是这样吗?@Clifford是的。我想在不改变频率的情况下改变采样率。基本上,我想通过跳过一些样本来降低信号的采样率。然后你应该编辑这个问题来澄清这一点,因为它目前没有这样说。同时,答案是,如果不重建信号,就无法对其重新采样。如果你的采样频率是40kHz,那么你可以对它的整数部分、一半、20kHz、三分之一13kHz等进行采样。只需在二次采样中移除一个样本,或在三次采样中移除两个样本,等等。但你不可能轻易获得因子1.6。或者通过具有可变采样频率。关于不规则采样如何影响信号或如何通过重新采样进行调整的一些讨论将是有益的。@EricPostChil:在OP下已经有关于过采样/欠采样等的评论。是,我认为,如果我的代码用于缩小图像的比例,由于重复应用的丢弃模式,它将创建人工制品。