📄 main.m
字号:
clear all; close all;
clear all; close all;
fr_length=input('please input frame length :default 10 \n ');
if isempty(fr_length)
fr_length = 10;
end
frames=input('please input number of frame :default 5 \n '); %%%%%%%%%% 帧数
if isempty(frames)
frames = 5;
end
EbN0_in=input('and the Eb/N0s in dB : ( in form [x x] ):defaut 2\n ');
if isempty(EbN0_in)
EbN0_in=2;
end
EbN0=10.^(EbN0_in/10);
%%%%%%%%%%%%%%%%%%%%% 生成卷积编码译码所需的网格 %%%%%%%
dlt(1:256,1:2,1:2)=[0];
for i=1:256
mm(1,1:9)=[0];
din=dec2bin(i-1);
for j=1:length(din)
k=10-j;
b=din(j);
mm(1,k)=b-48;
end
y1=mod(mm(1,3)+mm(1,4)+mm(1,5)+mm(1,9),2);
y2=mod(1+mm(1,3)+mm(1,4)+mm(1,5)+mm(1,9),2);
dlt(i,1,1)=y1;
dlt(i,2,1)=y2;
end
for i=1:256
mm(1,1:9)=[0];
din=dec2bin(i-1);
for j=1:length(din)
k=10-j;
b=din(j);
mm(1,k)=b-48;
end
y1=mod(mm(1,2)+mm(1,3)+mm(1,4)+mm(1,6)+mm(1,8)+mm(1,9),2);
y2=mod(1+mm(1,2)+mm(1,3)+mm(1,4)+mm(1,6)+mm(1,8)+mm(1,9),2);
dlt(i,1,2)=y1;
dlt(i,2,2)=y2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 产生译码矩阵 %%%%%%%%%%%%
% dlt1(1:256,1:2,1:2)=[1];
%for k=1:2
% for i=1:256
% for j=1:2
% if dlt(i,j,k)==0
% dlt1(i,j,k)=-1;
% end
%% end
% end
%end
%%%%%%%%%% 产生状态计算矩阵 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
slt(1:256,1:2)=[0];
for i=1:256
k=2*(mod(i-1,128))+1;
slt(i,1)=k;
slt(i,2)=k+1;
end
%%%%%%%%%%%%%%%%%% source %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%% 产生随机序列,并组帧 %%%%%%%%%%%%%%
data_src=source9(fr_length,frames);
for i=1:frames
in_bits(i,:)=data_src(i,1:fr_length);
end
for i=1:frames*fr_length
raw_bits(i)=in_bits(i);
end
%%%%%%%%%%%%%%%%%%%% 编码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_enc=conl(data_src,dlt,slt);
data_bpsk=bpsk(data_enc);
% AWGN
fprintf('Eb/N0 = %d dB',EbN0_in);
sigma = 1/sqrt(EbN0);
channal_out=data_bpsk+sigma.*randn(size(data_bpsk));
%%%%%%%%%%%%%%%%%% viterbi 解码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_out=softdecoder9(channal_out,dlt,slt);
% BER
for i=1:frames*fr_length
out_bits(i)=data_out(i);
end
ber=length(find(xor(raw_bits,out_bits)==1))/(frames*fr_length);
fprintf('\n');
fprintf('ber= %d',ber);
fprintf('\n');
%%%%%%%%%%%%%%%%%%%%%%% end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -