Advertisement
nirn

Untitled

Apr 13th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.52 KB | None | 0 0
  1. clear;
  2. %cyclic (7,4)
  3. n = 7;
  4. k = 4;
  5. gen=[1     0     1     1];  %wielomian generujacy dla n = 7 k =4  x^3 + x + 1
  6. msg=[1 1 0 1;
  7.      1 1 1 1;
  8.      1 0 1 1;
  9.      1 1 1 0];
  10. mul = [ 1 0 0 0];    % x^(n-k)
  11. disp('Pakiety');
  12. disp(msg);
  13.  
  14. %%KODOWANIE PAKIETOW
  15. encodedPcks =zeros(size(msg,1),n);
  16. for i=1:size(msg)
  17.     temp = msg(i,:);
  18.     w = conv(temp,mul);  
  19.     [~,r] = deconv(w,gen);
  20.     remAbs = mod(abs(r),2);
  21.     encoded = mod(w+remAbs,2);
  22.     encodedPcks(i,:) = encoded;
  23. end
  24.  
  25. disp('Zakodowane pakiety:');
  26. disp(encodedPcks);
  27.  
  28. encodedPcks(1,3) = ~encodedPcks(1,3); % blad na 3 pozycji, TODO generowanie bledów
  29. %%DECODING
  30.  
  31.  
  32.  
  33. disp('Dekodowanie:');
  34.  
  35. decodedPcks = zeros(size(msg,1),n);
  36. for l=1:size(encodedPcks)
  37.     toDecode = encodedPcks(l,:);
  38.     i = 1;
  39.     while(1)     %% petla while zostaje przerwana, gdy waga syndromu <=1
  40.         [q,r] = deconv(toDecode,gen);
  41.         remAbs = mod(abs(r),2);
  42.         weight = 0;
  43.         for j=1:length(remAbs)
  44.             if(remAbs(1,j) == 1)
  45.                 weight = weight +1;
  46.             end
  47.         end
  48.         if(weight<= 1)
  49.             toDecode = toDecode + remAbs;
  50.             toDecode = circshift(mod(abs(toDecode),2), [0,-i+1]);
  51.             decodedPcks(l,:) = toDecode;
  52.             break;
  53.         else
  54.             if(i-1 == k)
  55.                 disp("Blad, nie mozna naprawic wiecej niz 1 bledu");
  56.                 break
  57.             end
  58.             i = i+1;
  59.             toDecode = circshift(toDecode, [0, 1]);
  60.         end
  61.     end
  62. end
  63.  
  64. disp(decodedPcks);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement