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

📄 rough.m

📁 this file consists of many matlab programs
💻 M
字号:
% Program to generate a linear block code for coder and decoder

disp('enter value of n,k');
n=input('enter coefficient of n= ');
k=input('enter value of k= ');
disp('enter value of parity matrix');
disp('** Please note that no row or column should have all zeros ');
disp('** No row should be part an of identity matrix');
fprintf('order of parity matrix P= %d x %d\n',k,n-k);
p=input('enter parity matrix P ');
disp(p);
G=[eye(k),p];  % generator matrix
disp('generator matrix= ');
disp(G);
m=input('enter message word ');
for i=1:1:n-k  % loop to generate code from message
    code(1,i)=0;
    for j=1:1:k
        code(1,i) = rem((code(1,i) + m(1,j)*p(j,i)),2);
        
    end
    fprintf('\n\tcode%d = %d',i,code(1,i));  % display code
end
fprintf('\n\n\tCode Word For Given Messege Bit:\n\t');
codeword=[m code];
disp(codeword);  % display full codeword

fprintf('\n\n');

power= 2^k;

mesg=zeros(power,k);
for i=1:1:power-1  % loop to generate message bit table
    mesg_dec= bi2de(mesg(i,:),'left-msb');
    mesg_inc= mesg_dec + 1;
    mesg(i+1,:)= de2bi(mesg_inc,k,'left-msb');
end

parvec=zeros(1,n-k);
for q=1:1:power
    
for i=1:1:n-k  % loop to generate codeword table
    code(1,i)=0;
    for j=1:1:k
        code(1,i) = rem((code(1,i) + mesg(q,j)*p(j,i)),2);
    end
end

parvec(1,:)=(code);
vectab(q,:)=parvec(1,:);
end

codevectors=[mesg vectab];

for i=2:1:power  % loop to generate sun of row table
    weight(i-1,1)= sum(codevectors(i,:));
end

fullwt= [0;weight];

display('The full codeword table is ');
disp([codevectors fullwt]);

fprintf('\n Minimum distance\n');
Dmin= min(weight)  % display minimum distance

fprintf('\nNumber of errors that can be detected are\n');
s= Dmin-1;
fprintf('s <= %d\n',s);

fprintf('\nNumber of errors that can be corrected are\n');
t= floor(s/2);
fprintf('t <= %d\n',t);

decode = input('If you want to decode then enter 1 else enter 0 : ');
                     % ask for user input to continue
if (decode==1)
    
[x,y]=size(p);  % finding dimensions of matrix p
H = [p' eye(y)];  % generating h matrix
fprintf('The H matrix is\n');
disp(H);
r = input('Enter the recieved codeword ');
HT = H'
[u v]=size(HT);  % finding dimensions of matrix h transpose

fprintf('\n');
fprintf('\nThe syndrome is \n');
for i=1:1:v   % loop to generate syndrome
    synd(1,i)=0;
    for j=1:1:u
        synd(1,i) = rem((synd(1,i) + r(1,j)*HT(j,i)),2);
        
    end
    
end
disp(synd);  % display synddrome

table = syndtable(H);   % Produce decoding table.

syndrome_decimal = bi2de(synd,'left-msb');   % Convert to decimal.
disp(['Syndrome = ',num2str(syndrome_decimal),' (decimal), ',num2str(synd),' (binary)']);

correction_vector = table(1+syndrome_decimal,:)  % generate and display correction vector

corrected_code = rem(correction_vector+r,2)  % generate and display corrected vector
fprintf('\n');
disp('End of code');

else
    fprintf('\n');
    disp('End of code');
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -