0

我正在尝试计算 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 矩阵,而我需要一个值。

我究竟做错了什么?

4

1 回答 1

0

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

更重要的是:

看起来您使用(R*C). sqrtMSE也不需要平方根 ( ) 。(你已经找到了y1两倍的大小)。

也许将它用于MSE:

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

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

编辑:

如果您想要单独的平方误差:

err_sq = (y1 - y2).^2;
MSE = mean( err_sq );
于 2017-04-29T14:53:55.863 回答