Matlab:计算复数均方误差的正确方法是什么

信息处理 matlab 自习 复杂的
2022-01-30 18:23:56

我对涉及复数的均方误差的计算感到困惑。考虑到,真实的信道系数为

h_true =

   0.7071 + 0.7071i
   0.4243 + 0.4243i
   0.2121 + 0.2121i

和估计是

 h_e1 = 0.8100+0.8100i  
 h_e2 = 0.5100 + 0.5100i  
 h_e3 =  0.1200 +  0.1200i;

对于训练 epoch 1,我计算了估计值和实际值之间的误差

e = ((h_e1 - h_true(1)).^2) + ((h_e2 - h_true(2)).^2) + ((h_e3 - h_true(3)).^2)   ;

那么均方误差为

mse = e/3;

它为实部给出零,为虚部给出一些小数。

mse = 0 + 0.0176i

我应该分别计算 iamginary 和 real 部分的误差还是这样可以吗?

1个回答

均方误差为

e = ((abs(h_e1 - h_true(1))^2) + (abs(h_e2 - h_true(2))^2) + (abs(h_e3 - h_true(3))^2))/3;

但这很乏味!

如果你有1000条款而不是3? 要一个一个添加吗?

以矢量形式执行以更清晰和易于实施:

mse=E(|hh^|2)

在 MATLAB 中,您可以使用该函数mse()

 h_true = [ 0.7071 + 0.7071i
            0.4243 + 0.4243i
            0.2121 + 0.2121i ];

 h_e = [ 0.8100 + 0.8100i  
         0.5100 + 0.5100i  
         0.1200 + 0.1200i ];

 e = mean(abs(h_e-h_true).^2); % or eqivalently e = mse(abs(h_e-h_true));