有一组数组数据,如图所示,,我想将这组数据调整到0-255区别,例如425对应0,435对应1,以此例推至1435对应255,最好是能用一个公式,比如我得到425,通过公式换算后,可得到为0。公式换算后得到0-255的结果允许有正负1误差。
(x-425)*255/(1435-425)
这个和 http://ask.csdn.net/questions/771513 不是一个问题么
其实你这是个归一化的问题:
https://blog.csdn.net/pipisorry/article/details/52247379
void main()
{
uint32_t array255[63]={0};
uint32_t array[63]={
425,435,447,457,483,493,509,528,541,563,580,596,609,625,644,
657,676,699,708,725,747,766,783,805,825,844,860,879,902,918,
937,957,973,995,1018,1034,1050,1069,1089,1111,1124,1140,1160,1182,1198,
1218,1237,1256,1272,1289,1311,1327,1337,1353,1366,1379,1388,1392,1408,1417,
1424,1437,1437};
uint32_t ssmall=0,bbig=0;
/* fine the biggest and the smallest */
ssmall=array[0];
bbig=array[0];
for(n=0;n {
if(array[n] ssmall=array[n];
if(array[n]>bbig)
bbig=array[n];
}
printf("ssmall=%d\r",ssmall);
printf("\r\nbbig=%d\r",bbig);
/* modify to 0~255 */
for(n=0;n<63;n++)
{
array255[n]=(((array[n]-ssmall)*255)/(bbig-ssmall));
printf("array255[%d]=%d\r\n",n,array255[n]);
nrf_delay_ms(10);
}
}