⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main2.m

📁 CRC检错功能
💻 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 + -