我正在尝试将 44100 Hz 采样到 96000 Hz,我已经尝试过了。
sum1 = mPastWavBuffer[(int)mOffset];
sum2 = mPastWavBuffer[(int)mOffset+1];
double sum = (sum1 + (sum2-sum1)) * (mOffset-(int)mOffset);
mOffset 是一个双精度值,包含递增的步进因子,以在 44100 Hz 示例文件中移动并使其达到 96000 Hz。这个线性插值取自维基线性插值从两个已知点 但这并没有给我我想要的结果,这听起来很糟糕。
我在这里用错了还是如果这不是使用它的方式,我应该怎么做这个公式?
问候,摩根
这可能是因为线性插值并不是您真正想要的。 如果您只是将采样率加倍,它可能工作得很好,但是对于非整数因子,如果您获得良好的结果,我会感到惊讶。
我建议要么尝试高阶多项式插值,要么在频率空间中做一些事情(第一个比第二个更容易)。
编辑:从评论中我还注意到您的总和计算已关闭:
double sum = sum1 + (sum2-sum1) * (mOffset-(int)mOffset);
是你想要的。