📄 pr9_24.m
字号:
%Problem 9.24;
%error detecting by CRC;
clear all;
n=65; %specify length n<2^16;
m=ceil(log2(n+1)); %degree of primitive polynomial;
g1=primpoly(m,'nodisplay'); %primitive polynomial of degree m;
g1b=de2bi(g1); %converts polynomial to binary vector;
g=gfconv([1,1],g1b); %generator polynomial ready;
erweight=unidrnd(3,1,1); %weight 1, 2 or 3 of error vector;
erpat=randerr(1,n,erweight); %error vector of weight 1, 2 or 3;
[q,r]=gfdeconv(erpat,g); %division by generator polynomial;
fprintf('\n'); fprintf(['generator polynomial g= ',num2str(g)]); fprintf('\n');
fprintf(['error vector e= ',num2str(erpat)]); fprintf('\n');
fprintf(['syndrome r= ',num2str(r)]); fprintf('\n');
k=n-length(g)+1; erp1=unidrnd(2^k-1,1,1); erp=de2bi(erp1); %binary vector to come to undetected error;
erpat1=gfconv(g,erp); %error vector coinciding with codeword;
[q,r]=gfdeconv(erpat1,g); %division by generator polynomial;
fprintf('\n'); fprintf(['error vector e= ',num2str(erpat1)]); fprintf('\n');
fprintf(['syndrome r= ',num2str(r)]); fprintf('\n');
pr=0; N=10000; %initialize probability of error non-detecting;
for k=1:N
erpat=unidrnd(2,1,n)-1; %error vector;
[q,r]=gfdeconv(erpat,g);
if any(r)==0 pr=pr+1; end;
end;
prex=pr/N; prth=2^(-m-1); %experimental and predicted probabilities of error non-detecting;
fprintf('\n'); disp([' P_{nd,ex} P_{nd,th}']); fprintf('\n');
disp([prex,prth]); fprintf('\n');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -