useprbs = 1; M = 8; randkey = 1; %%%%% PRBS Generation in correct shape for Modulation Format %%%%%% O = 18; %order of prbs N = 2^(O-1); %length of prbs [~,seed] = prbs(O,1); %initialize first seed of prbs bitpattern=[]; if useprbs for i = 1:log2(M) [bitpattern(:,i),seed] = prbs(O,N,seed); end else s = RandStream('twister','Seed',randkey); for i = 1:log2(M) bitpattern(:,i) = randi(s,[0 1], N, 1); end end if M == 6 bitpattern = reshape(bitpattern,[],1); bitpattern = bitpattern(1:end-mod(length(bitpattern),5)); end Tx_bits = Informationsignal(bitpattern); Symbols_tx = PAMmapper(M,0).map(Tx_bits); Symbols_tx.fs = fsym; % Symbols = Duobinary().precode(Symbols_tx); Symbols = Duobinary().encode(Symbols_tx); % Symbols.spectrum("displayname","db","fignum",12) Symbols = Duobinary().feedbackdetector(Symbols); % Symbols.eye(fsym,M); % Symbols = Duobinary().decode(Symbols); Rx_bits = PAMmapper(M,0).demap(Symbols); [~,error_num,ber,error_pos] = calc_ber(Tx_bits.signal,Rx_bits.signal,"skip_front",0,"skip_end",1,"returnErrorLocation",1); disp(['BER: ',sprintf('%.1E',ber),' - - PAM-',num2str(M)]); % figure;hold on stairs(Rx_bits.signal(1:100,1),'LineWidth',2) stairs(Tx_bits.signal(1:100,1),'LineStyle',':','LineWidth',2); figure;hold on stairs(Symbols_tx.signal(1:100,1),'LineWidth',2) stairs(Symbols.signal(1:100,1),'LineStyle',':','LineWidth',2);