随机信号经过LDPC编码、DVB-S2X的APSK调制、LOG-MAP算法软解调、LDPC解码之后,误码率很高怎么办,信噪比升高,误码率也没有很明显的改善
16-APSK调制时,整个过程的代码:
s0000 = 0.4219 + 0.1747*1i;
s0001 = 0.1747 + 0.4219*1i;
s0010 = -0.4219 + 0.1747*1i;
s0011 = -0.1747 + 0.4219*1i;
s0100 = 0.4219 - 0.1747*1i;
s0101 = 0.1747 - 0.4219*1i;
s0110 = -0.4219 - 0.1747*1i;
s0111 = -0.1747 - 0.4219*1i;
s1000 = 0.9239 + 0.3827*1i;
s1001 = 0.3827 + 0.9239*1i;
s1010 = -0.9239 + 0.3827*1i;
s1011 = -0.3827 + 0.9239*1i;
s1100 = 0.9239 - 0.3827*1i;
s1101 = 0.3827 - 0.9239*1i;
s1110 = -0.9239 - 0.3827*1i;
s1111 = -0.3827 - 0.9239*1i;
H = dvbs2ldpc(90/180); %返回来自 DVB-S.2 标准的码率为 r 的 LDPC 码的奇偶校验矩阵。 H 是一个稀疏逻辑矩阵。
SNR = 3.5:0.2:6.5;
M = 16;
std = 's2x';
len = 16200;
times = 30;
error = zeros(1,length(SNR));
for t = 1:length(SNR)
for tt = 1:times
x = randi([0 1],32400,1);
h = step(comm.LDPCEncoder(H),x);
y1 = dvbsapskmod(h,M,std,'90/180','InputType','bit');
snr = SNR(t);
y = awgn(y1,snr,'measured');
llr = zeros(len*4,1);
llr1 = zeros(len*4,1);
for i = 1:len
llr(4*i-3) = log((pro(snr,y(i),s0000)+pro(snr,y(i),s0001)+pro(snr,y(i),s0010)+pro(snr,y(i),s0011)+pro(snr,y(i),s0100)+pro(snr,y(i),s0101)+pro(snr,y(i),s0110)+pro(snr,y(i),s0111))/(pro(snr,y(i),s1000)+pro(snr,y(i),s1001)+pro(snr,y(i),s1010)+pro(snr,y(i),s1011)+pro(snr,y(i),s1100)+pro(snr,y(i),s1101)+pro(snr,y(i),s1110)+pro(snr,y(i),s1111)));
llr(4*i-2) = log((pro(snr,y(i),s0000)+pro(snr,y(i),s0001)+pro(snr,y(i),s0010)+pro(snr,y(i),s0011)+pro(snr,y(i),s1000)+pro(snr,y(i),s1001)+pro(snr,y(i),s1010)+pro(snr,y(i),s1011))/(pro(snr,y(i),s0100)+pro(snr,y(i),s0101)+pro(snr,y(i),s0110)+pro(snr,y(i),s0111)+pro(snr,y(i),s1100)+pro(snr,y(i),s1101)+pro(snr,y(i),s1110)+pro(snr,y(i),s1111)));
llr(4*i-1) = log((pro(snr,y(i),s0000)+pro(snr,y(i),s0001)+pro(snr,y(i),s0100)+pro(snr,y(i),s0101)+pro(snr,y(i),s1000)+pro(snr,y(i),s1001)+pro(snr,y(i),s1100)+pro(snr,y(i),s1101))/(pro(snr,y(i),s0010)+pro(snr,y(i),s0011)+pro(snr,y(i),s0110)+pro(snr,y(i),s0111)+pro(snr,y(i),s1010)+pro(snr,y(i),s1011)+pro(snr,y(i),s1110)+pro(snr,y(i),s1111)));
llr(4*i) = log((pro(snr,y(i),s0000)+pro(snr,y(i),s0010)+pro(snr,y(i),s0100)+pro(snr,y(i),s0110)+pro(snr,y(i),s1000)+pro(snr,y(i),s1010)+pro(snr,y(i),s1100)+pro(snr,y(i),s1110))/(pro(snr,y(i),s0001)+pro(snr,y(i),s0011)+pro(snr,y(i),s0101)+pro(snr,y(i),s0111)+pro(snr,y(i),s1001)+pro(snr,y(i),s1011)+pro(snr,y(i),s1101)+pro(snr,y(i),s1111)));
end
yy = step(comm.LDPCDecoder(H,'DecisionMethod','Hard decision','MaximumIterationCount',50),llr); %
es = 0;
for i = 1:32400
if yy(i)~=x(i)
es = es + 1;
end
end
error(t) = es/32400 + error(t);
end
error(t)=error(t)/times;
end
figure
semilogy(SNR,error,'-*');grid on;
xlabel('SNR (dB)')
ylabel('errors')
%%pro代码如下:
function ss = pro(snr,x,y)
var = 1/10^(snr/10);
ss = exp(-((real(y)-real(x))^2+(imag(y)-imag(x))^2)/var);
end
信噪比在3.5时,误码率为0.2,信噪比达到6时,误码率还几乎为0.1
想要达到这种效果:
一种用于DVB-S2的16-APSK信号的近似软解码算法...与众所周知的 max-log-MAP 算法相比,算法具有更好的性能
https://www.researchgate.net/publication/251838969_An_approximated_soft_decoding_algorithm_of_16-APSK_signal_for_DVB-S2