【发布时间】:2017-04-04 20:24:39
【问题描述】:
我目前正在开发一个基于 Arduino 的音频项目。接收到的输入(通过 ADC)是 double 类型,我必须对数据执行一些数学运算。然后我需要输出音频。然而,问题是 PWM 输出寄存器(基于 AVR)接受整数。
因此,有什么方法可以将此浮点数转换为 int 而不会丢失数据?
【问题讨论】:
-
ATmega ADC 输出一个 10 位整数。你会丢失什么数据?请举一个转化的例子。
我目前正在开发一个基于 Arduino 的音频项目。接收到的输入(通过 ADC)是 double 类型,我必须对数据执行一些数学运算。然后我需要输出音频。然而,问题是 PWM 输出寄存器(基于 AVR)接受整数。
因此,有什么方法可以将此浮点数转换为 int 而不会丢失数据?
【问题讨论】:
通用浮点到整数的转换几乎总是会丢失信息,除非输入被量化并且输入的最大动态范围和所有后续算术运算的结果被限制为 2^n 小于您的大小的一些 n整数。
请注意,量化噪声的噪声整形(过滤抖动)可能有助于减少一些信息丢失,具体取决于信号输入。
【讨论】: