Füge PRMS-Fehlerbehandlung hinzu und implementiere Partialresponse-Kodierung
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
|
||||
|
||||
for M = [2 4 8]
|
||||
bits = Signalgenerator("form", signalform.prms,"M", M,"order", 15).process();
|
||||
|
||||
symbols = PAMmapper(M,0).map(bits);
|
||||
mapper = PAMmapper(M,0);
|
||||
symbols = mapper.map(bits);
|
||||
|
||||
symbols_pre = Duobinary().precode(symbols);
|
||||
|
||||
@@ -11,8 +10,31 @@ for M = [2 4 8]
|
||||
|
||||
symbols_rx = Duobinary().decode(symbols_db);
|
||||
|
||||
% Vergleichen von b(n) und d_dec(n)
|
||||
bits_rx = PAMmapper(M,0).demap(symbols_rx);
|
||||
[~,~,ber,~] = calc_ber(bits.signal,bits_rx.signal,"skip_front",10,"skip_end",10,"returnErrorLocation",1);
|
||||
disp(['BER: ',sprintf('%.1E',ber),' - - PAM-',num2str(M)]);
|
||||
end
|
||||
[~,~,ber,~] = calc_ber(bits.signal,bits_rx.signal,"skip_front",0,"skip_end",0,"returnErrorLocation",1);
|
||||
disp(['Class BER: ',sprintf('%.1E',ber),' - PAM-',num2str(M)]);
|
||||
|
||||
symbols_pre_pr = Partialresponse("order",1).precode(symbols,"M",M);
|
||||
symbols_db_pr = Partialresponse("order",1).encode(symbols_pre_pr,"M",M);
|
||||
symbols_rx_pr = Partialresponse("order",1).decode(symbols_db_pr,"M",M);
|
||||
|
||||
bits_rx_pr = mapper.demap(symbols_rx_pr);
|
||||
[~,~,ber_pr,~] = calc_ber(bits.signal,bits_rx_pr.signal,"skip_front",0,"skip_end",0,"returnErrorLocation",1);
|
||||
disp(['Partialresponse BER: ',sprintf('%.1E',ber_pr),' - PAM-',num2str(M)]);
|
||||
|
||||
pre_match = isequaln(symbols_pre.signal, symbols_pre_pr.signal);
|
||||
enc_match = isequaln(symbols_db.signal, symbols_db_pr.signal);
|
||||
dec_match = isequaln(symbols_rx.signal, symbols_rx_pr.signal);
|
||||
|
||||
pre_maxdiff = max(abs(symbols_pre.signal - symbols_pre_pr.signal));
|
||||
enc_maxdiff = max(abs(symbols_db.signal - symbols_db_pr.signal));
|
||||
dec_maxdiff = max(abs(symbols_rx.signal - symbols_rx_pr.signal));
|
||||
|
||||
disp(['Precode match: ',num2str(pre_match), ...
|
||||
' | max abs diff: ',sprintf('%.3g',pre_maxdiff)]);
|
||||
disp(['Encode match: ',num2str(enc_match), ...
|
||||
' | max abs diff: ',sprintf('%.3g',enc_maxdiff)]);
|
||||
disp(['Decode match: ',num2str(dec_match), ...
|
||||
' | max abs diff: ',sprintf('%.3g',dec_maxdiff)]);
|
||||
disp('---');
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user