计算音频MATLAB的{MSE

时间:2017-04-28 22:30:27

标签: matlab mse

我试图在MATLAB中计算某些音频文件的MSE。我的代码如下所示。

[y1,fs1]=audioread('one.mp3');
[y2,fs2]=audioread('two.mp3');
[c1x,c1y]=size(y1);
[c2x,c2y]=size(y1);

 R=c1x;
 C=c1y;
err = sum((y1-y2).^2)/(R*C);
MSE=sqrt(err);

问题是,当计算出MSE时,我得到1 x 2矩阵,而我需要一个单值。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的代码可能会为每个音频通道返回一个值。如果你有两个通道,它将返回两个值,如果你有三个通道,它将返回三个值,等等。

更重要的是:

看起来您使用(R*C)通过频道数量对总和进行标准化。 平方根(sqrt)也是unnecessary for MSE。 (而且你已经发现y1两次的大小了。

或许可以将此用于MSE:

MSE = mean( (y1 - y2).^2 );

现在它将根据行数找到平均值并自动除以该大小。 :)

修改

如果你想分开平方误差:

err_sq = (y1 - y2).^2;
MSE = mean( err_sq );