c# - 规范化有符号值会产生 0 和 1 之外的值
问题描述
我正在尝试创建某种热图来可视化从传感器获得的数据。到目前为止,这可行,但看起来很奇怪。所以我发现我的规范化值的代码(至少从-100到100)一定是无效的。
我经常遇到异常,因为我用来计算颜色(字节)的因子(归一化值)是负数或大于 1。
所以我修改了我的代码,基本上改变了最小值、最大值和值,Math.Abs(min)
以确保我的值是正的。负面问题已得到解决,但有时我会得到1.02xxxx 之类的值,这是绝对不能发生的。编辑:在某些情况下仍然会得到负值......
到目前为止,这是我的代码:
double min = data.Min();
double max = data.Max();
double avg = data.Average();
double v = max - min;
byte a, b, g, r;
// Set minimum and maximum
Dispatcher.InvokeAsync(() =>
{
Minimum = min;
Maximum = max;
Average = avg;
});
double shift = 0;
if (min < 0) // If minimum is negative, shift it to 0 and everything else positively by Abs(min)
{
max += shift = Math.Abs(min);
min += shift;
}
int skipFactor = (int)(1 / _pointResolution);
for (int i = 0; i < data.Length; i += skipFactor)
{
// If min == 0 then shift data
double value = Math.Abs(min) < 0.0001d ? (data[i] + shift) / max : (data[i] - min) / v;
...
}
如何在不添加舍入或“边缘情况”的情况下解决此问题?我假设Math.Abs()
与添加操作相结合会导致值略微偏离......但必须有一个解决方案,对吧?
解决方案
推荐阅读
- r - 我可以在 RStudio 的散点图中识别点并仍然使用 knitr 吗?
- javascript - 如何重新排序存储在 Mongo 中的这个数组中的项目?
- http - HTTP 服务器连接管理
- reactjs - Reactjs:淡入数据无法正常工作
- javascript - Mapbox-gl js 离线模式
- java - 如何创建一个包含两个独立类的 LinkedList?
- go - 使用 make 为不同架构构建动态目标?
- mysql - 合并两个 MySQL 表 SQL 语句
- java - 我需要通过正则表达式从字符串中过滤掉单词或单词组
- python - 如何一次使用列表中的多个项目 - python