qq_38496394
秋葵炒辣椒
采纳率100%
2019-08-13 19:54

怎么用C语言将一组数组数据,调整到0-255区间

10
已采纳

有一组数组数据,如图所示,图片说明,我想将这组数据调整到0-255区别,例如425对应0,435对应1,以此例推至1435对应255,最好是能用一个公式,比如我得到425,通过公式换算后,可得到为0。公式换算后得到0-255的结果允许有正负1误差。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • zaq15csdn greatofdream 2年前

    (x-425)*255/(1435-425)

    点赞 1 评论 复制链接分享
  • phil168 qme168 2年前

    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);
                }
    

    }

    点赞 1 评论 复制链接分享
  • winnerwei1 winnerwei1 2年前

    其实你这是个归一化的问题:
    https://blog.csdn.net/pipisorry/article/details/52247379

    点赞 1 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    这个和 http://ask.csdn.net/questions/771513 不是一个问题么

    点赞 1 评论 复制链接分享