📄 main.m
字号:
clear all
tic
ebno = 14;
%rows=128;cols=256;
k = 256;
maximum_blockerror=500;
blockerrors=0;
biterrors=0;
block=0;
%s=round(rand(1, cols-rows));
%产生H矩阵
%H = genH(rows,cols);
%使用H矩阵进行LDPC编码
%[u,P,rearranged_cols]=ldpc_encode(s,H);
%bits = u;
%numbits = length(bits);
%numbits=10000;
%bits=round(rand(1, numbits));
%amp=1;
%tx_waveform=bpsk(u,amp);
while(blockerrors<maximum_blockerror)
%s = zeros(1,rows);
s = zeros(1,k);
%[u,P,rearranged_cols] = ldpc_encode(s,H);
%bits = u;
bits = s;
numbits=length(bits);
[PPMseqOUT]=PPMencode(numbits,bits);
%r_PPMseq=abs(awgn(PPMseqOUT,SNR));
Eb = (1/length(PPMseqOUT))*sum(PPMseqOUT.^2);
EbNo = 10.^(ebno./10);
No = Eb./EbNo;
nstdv = sqrt(No./2);
noise = nstdv.*randn(1,length(PPMseqOUT));
r_PPMseq = PPMseqOUT*0.3981 + noise;
%[rxbits] = PPM_hard_decode(r_PPMseq,numbits)
[rxbits llr]=PPM_soft_decode(r_PPMseq,numbits);
%WB=sum(abs(rxbits-bits));
%BER=WB/numbits;
%[rxbits llr]=PPM_soft_decode(r_PPMseq,numbits);
%scale(1:length(u))=1; %No fading.
%LDPC译码
%[uhat,vhat]=ldpc_decode(llr,H,rearranged_cols)
%errmax=find(s~=uhat);
%nerr=length(errmax);
%Errors=zeros(1,length(uhat));
%Errors(find(s~=uhat))=1;
Errors=zeros(1,length(rxbits));
Errors(find(s~=rxbits))=1;
if sum(Errors)~=0
blockerrors=blockerrors+1;
end
biterrors=biterrors+sum(Errors);
block=block+1;
end
%BER=biterrors/(block*rows);
BER=biterrors/(block*k);
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -