【发布时间】:2014-03-20 17:22:20
【问题描述】:
我有一组生成的噪声样本,我需要将它们转换为 8、16、32 位的 PCM 格式。我知道当范围为[0;max] 时该怎么做,但当下限为负数时会出现问题。
这就是我对[0,max] 范围的处理方式:
byte quantize(double sample, double max_value)
{
return (byte)((sample / max_value) * 255.0);
}
【问题讨论】:
-
也许你应该展示你是如何为
[0,max]做的,以及它对[-a,a]有何不同 -
byte quantize(double sample, double max_value) { return (byte)((sample / max_value) * 255.0); } -
将其添加到问题中。
-
你能不能把
a加到sample和max_value上? -
@Snakerek 您接受的答案是错误的。它确实不将连续范围划分为 256 个大小相等的块。它将连续范围划分为 255 个大小相等的块,获得 255 值的唯一方法是将最大值作为输入。我的答案可能看起来更复杂是有原因的:因为它需要正确完成。
标签: c# signal-processing