【发布时间】:2020-03-30 15:58:10
【问题描述】:
使用 C++,因为这发生在微控制器上。我的输入是六个 int16_t。我将它们转换为 int32_t,这样我就可以将它们加在一起,然后除以 6,然后将结果存储在 int16_t 中以供传输。如下所示,假设 someRandomInt 就是这样,每行一个随机的 16 位整数:
int16_t one = someRandomInt;
int16_t two = someRandomInt;
int16_t three = someRandomInt;
int16_t four = someRandomInt;
int16_t five = someRandomInt;
int16_t six = someRandomInt;
int32_t sum = (int32_t)one + (int32_t)two + (int32_t)three + (int32_t)four + (int32_t)five + (int32_t)six;
int16_t result = (int16_t)(sum / 6);
我每秒执行 16384 次,然后对结果数组执行 I/Q 解调。
在 Python 中使用它,我计算出在总和(-196601 到 196601)的整个可能性范围内,当我除以 6 并取所有内容的小数部分时,平均小数部分为 0.417 ±0.285。我的直觉是,当我进行上述数学运算时,我失去了。那是对的吗?我担心传感器值何时接近零。
【问题讨论】:
-
您是否正在寻找熵位的测量值?
-
你用这个计算的损失做什么?这可能有助于我们了解最佳方法。
-
@JohnFilleau 输入来自六个相同的传感器,我对它们进行平均以提高 SNR。我试图了解这样做时我丢失了多少信息,因为我需要将其作为测量不确定性的一部分进行报告。
-
好的,所以您的最终输出将是一系列可能的值。 “平均值实际上在 100 到 101 之间”或类似的东西
-
抱歉之前的光顾回答 ;-) 我想知道
(int16_t)((sum + 3) / 6);是否会给你一个更好的衡量标准?