⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vqlbg.m

📁 很好的MATLAB开发源程序 基于VQ矢量量化的语音识别程序
💻 M
字号:
%该段程序采用循环算法,每次循环分裂生成本次循环的初始码本,再用LBG算法生成本次循环的最终的码本,要生成k=2^i个码字的码本只要经过i次这样循环就可生成最终的码本
function r = vqlbg(d,k)
% Inputs:
%        d:训练数据矢量
%        k:码本尺寸
% Output:
%        r:VQ码本
e = .001;
%求质心
r = mean(d,2);%行平均即质心
dpr = 10000;%畸变初值
%分裂质心
for i = 1:log2(k)%分裂次数
    r = [r*(1+e), r*(1-e)];
    while (1) 
        z = disteu(d, r);
        [m,ind] = min(z, [], 2);%最小欧氏距离给m,所在位置的标号给ind
        t = 0;
        %聚类
        for j = 1:2^i
            r(:, j) = mean(d(:, find(ind == j)), 2);%将输入信号根据最邻近准则分成了2^j个子集并求得每个子集的新质心
            x = disteu(d(:,find(ind == j)), r(:, j));%本次畸变
            for q = 1:length(x) 
                t = t + x(q);%i次迭代后的总畸变值
            end
        end
        if (((dpr - t)/t) < e)
            break;
        else
            dpr = t;
        end
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -