音频文件的联合熵

时间:2014-10-22 16:49:31

标签: arrays matlab audio entropy accumarray

因此,在尝试使用基于cicle的重函数计算两个信息源的联合熵之后,我发现了这个有用的MATLAB函数accumarray,并尝试了以下代码:

function e = jointEntropy(fonte1, fonte2)
    i = double(fonte1(:))+ 1; 
    j = double(fonte2(:)) + 1; 

    subs = [i j];
    f = accumarray(subs, ones(length(fonte1), 1));
    p = f / length(fonte1);
    freq = f ~= 0;
    prob = p(freq);
    e = -sum(prob.*log2(prob));
end

,其中fonte1fonte2是信息来源,1xN数组。对于两个源只有正整数值的例子,这很好用,但后来我尝试将它用于音频文件(即数值范围从-1到1的数组)并且它一直给我一个错误。我尝试为每个数组添加1(范围从0到2),将它们乘以100并舍入数字,以获得非负整数,但它仍然不起作用。

非常感谢您对此代码的任何想法/替代方案。

0 个答案:

没有答案