夜猫子

夜猫子
随笔 - 5, 文章 - 1, 评论 - 1, 引用 - 0
数据加载中……

数据量化算法

1. 四舍五入  

   float val = 0.9; 
   int nval = val + 0.5;

2. 浮点类型的数组

int  quantization(float * pnote, int note_num, int * out_template)
{

    float best_shift = -1000.0f;
    float min_dist = 10000.0f;  // 最小路径
    
    
// 寻找最小路径(最佳偏移值)
    
// 把1一百等分,精度为0.01
    for (int i = -50; i < 50; ++i)
    {
        float cur_shift = i * 0.01;
        float cur_dist = 0.0f;
        for (int j = 0; j < note_num; ++j)
        {
            if (pnote[j] < 1.0f)
                continue;
            cur_dist += fabs((pnote[j] + cur_shift) - int(pnote[j] + cur_shift + 0.5));  // 量化公式
        }
        if (cur_dist < min_dist)
        {    
            min_dist = cur_dist;
            best_shift = cur_dist;
        }
    }
    
    // 量化
    for (int i = 0; i < note_num; ++i)
    {
        if (pnote[i] > 1.0f)
        {
            pnote[i] = int(pnote[i] + best_shift + 0.5); 
        }
    }

    return 0;
}

posted on 2012-05-22 23:09 夜猫子 阅读(595) 评论(0)  编辑 收藏 引用 所属分类: 语音处理


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理