Matlab 角度偏差

Matlab 角度偏差,matlab,signal-processing,complex-numbers,Matlab,Signal Processing,Complex Numbers,我的BPSK信号处理有问题。我想确定信号星座的角度偏差 th = angle(x); if nnz(th < pi/2 & th > 0) > nnz(th > pi/2 & th>0) mth = rad2deg(mean(th(th < pi/2 & th > 0))); else mth = rad2deg(-pi + mean(th(th >= pi/2 & th > 0))); en

我的BPSK信号处理有问题。我想确定信号星座的角度偏差

th = angle(x);
if nnz(th < pi/2 & th > 0) > nnz(th > pi/2 & th>0) 
    mth = rad2deg(mean(th(th < pi/2 & th > 0)));
else
    mth = rad2deg(-pi + mean(th(th >= pi/2 & th > 0)));
end
我有一个基于正交的想法,如下例所示。但它不适用于噪声星座与1/4和4/4轴相交的情况。在这种情况下,结果并不令人满意-脚本只考虑星座的一部分的平均角度

th = angle(x);
if nnz(th < pi/2 & th > 0) > nnz(th > pi/2 & th>0) 
    mth = rad2deg(mean(th(th < pi/2 & th > 0)));
else
    mth = rad2deg(-pi + mean(th(th >= pi/2 & th > 0)));
end
th=角度(x);
如果nnz(th0)>nnz(th>pi/2&th>0)
mth=rad2deg(平均值(th(th0));
其他的
mth=rad2deg(-pi+平均值(th(th>=pi/2&th>0));
结束
结果:

真实信号(不符合要求)

测试信号(正常)

测试信号(不正常)

实际信号中的噪声与正弦波导频信号类似

第二个脚本:

ma = rad2deg(angle(mean(x(x >= 0)))); 
mb = rad2deg(angle(mean(x(x<0)))); 
mth = (ma + (rad2deg(pi) + mb))/2;
ma=rad2deg(角度(平均值x(x>=0));
mb=rad2deg(角度)平均值x(x使用函数确定接收符号所在的象限,然后从理想符号中减去接收符号的角度,得到相位误差。

使用函数确定接收符号所在的象限,然后从理想符号中减去接收符号的角度,得到相位误差