void NormalizeArray(float* array, int length) { // Step 1: 找到最大值和最小值 float max = array[0]; float min = array[0]; for (int i = 1; i < length; i++) { if (array[i] > max) { max = array[i]; } if (array[i] < min) { min = array[i]; } } // Step 2: 计算归一化比例因子 float scale = 1.0 / (max - min); // Step 3: 归一化处理数组 for (int i = 0; i < length; i++) { array[i] = (array[i] - min) * scale; } }若输入数组类型为uint16_t,怎么修改
时间: 2024-02-14 14:27:29 浏览: 137
1_1. 产生100个随机数_求其最小值和最大值以及平均值_
5星 · 资源好评率100%
如果输入数组的类型为uint16_t,那么归一化处理函数可以稍作修改。由于uint16_t是无符号整数类型,不存在负数值,因此归一化处理时不需要考虑负数的情况。
以下是修改后的归一化处理函数:
```c
void NormalizeArray(uint16_t* array, int length) {
// Step 1: 找到最大值
uint16_t max = array[0];
for (int i = 1; i < length; i++) {
if (array[i] > max) {
max = array[i];
}
}
// Step 2: 计算归一化比例因子
float scale = 1.0 / max;
// Step 3: 归一化处理数组
for (int i = 0; i < length; i++) {
array[i] = (uint16_t)(array[i] * scale);
}
}
```
在这个修改后的函数中,我们首先找到数组中的最大值,然后计算归一化比例因子时,使用浮点数类型的scale来存储比例因子。最后,在归一化处理数组时,将每个元素乘以scale,并将结果强制转换回uint16_t类型。
请注意,在这个修改后的函数中,我们假设输入数组中的值都是非负数。如果输入数组中包含负数,则需要进行适当的处理。
阅读全文