📄 main2.m
字号:
function main2
%说明:由于一次求取带有随机性,所以求取50次,然后求取50次的平均值
%计算误帧率随信道的误码率变化情况,画图方法:统计50次的错误桢数/50次总的桢数
%计算信息的效率画图表示,画图方法:统计50次,每一次的所用的次数,结果=50/50次的所用的次数的总合
%**********************初始设置********************************************
length_signal=1000; %设置信源的桢数
poly=[1 1 0 0 1 1]; %检验用多项式
wrong_decode_all=1e-4:1e-4:1e-3;
scr=rand(1,length_signal)<0.5; %产生信源信号,其中length_signal是一帧的数目
[M N]=size(poly);
crc_encode_scr=crc_encode(scr,poly); %对源信号进行crc编码
count_num=zeros(1,10); %统计每一个误码率,所对应的50次运算中的总的运算次数
wrong_all=zeros(1,10); %统计每一个误码率,所对应的50次运算中的总的错误的桢数
signal_all=zeros(1,10); %统计每一个误码率,所对应的50次运算中的总的桢数
for ii=1:10
wrong_decode=wrong_decode_all(ii);
count_num(ii)=0;
wrong_all(ii)=0;
signal_all(ii)=0;
for jj=1:50
judge=1;
while judge==1
%以下经过BSC信道
count_num(ii)=count_num(ii)+1;
errVec=rand(1,length_signal)<wrong_decode; %其中1e-3为信道的错误概率,你可以利用一个for循环求出不同错误概率的情况。
rev=mod(crc_encode_scr+[errVec zeros(1,N-1)],2); %只要errVec=1,则Scr发生变化。因为errVec中0出现的概率为1e-3,所以信源发生错误的概率为1e-3
[crc_decode_rev,error]=crc_decode(rev,poly); %crc解码
num=0;
detect2=0;
if error==1
for i=1:length(scr)
if scr(i)~=crc_decode_rev(i)
num=num+1; %计算错误桢数
end;
end;
else
for i=1:length(scr)
if scr(i)~=crc_decode_rev(i)
detect2=1;
num=num+1; %确认计算没有出现错误
end;
end;
end
wrong_all(ii)=wrong_all(ii)+num;
judge=(error~=detect2);
end
signal_all(ii)=signal_all(ii)+length_signal*count_num(ii);
end
end
plot(wrong_decode_all,wrong_all./signal_all)
title('误帧率随信道的误码率变化情况')
xlabel('误码率')
ylabel('错误桢数率')
grid on
figure(2)
plot(wrong_decode_all,50./count_num)
title('信息的效率图')
xlabel('误码率')
ylabel('有效率')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -