Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear;
- %cyclic (7,4)
- n = 7;
- k = 4;
- gen=[1 0 1 1]; %wielomian generujacy dla n = 7 k =4 x^3 + x + 1
- msg=[1 1 0 1;
- 1 1 1 1;
- 1 0 1 1;
- 1 1 1 0];
- mul = [ 1 0 0 0]; % x^(n-k)
- disp('Pakiety');
- disp(msg);
- %%KODOWANIE PAKIETOW
- encodedPcks =zeros(size(msg,1),n);
- for i=1:size(msg)
- temp = msg(i,:);
- w = conv(temp,mul);
- [~,r] = deconv(w,gen);
- remAbs = mod(abs(r),2);
- encoded = mod(w+remAbs,2);
- encodedPcks(i,:) = encoded;
- end
- disp('Zakodowane pakiety:');
- disp(encodedPcks);
- encodedPcks(1,3) = ~encodedPcks(1,3); % blad na 3 pozycji, TODO generowanie bledów
- %%DECODING
- disp('Dekodowanie:');
- decodedPcks = zeros(size(msg,1),n);
- for l=1:size(encodedPcks)
- toDecode = encodedPcks(l,:);
- i = 1;
- while(1) %% petla while zostaje przerwana, gdy waga syndromu <=1
- [q,r] = deconv(toDecode,gen);
- remAbs = mod(abs(r),2);
- weight = 0;
- for j=1:length(remAbs)
- if(remAbs(1,j) == 1)
- weight = weight +1;
- end
- end
- if(weight<= 1)
- toDecode = toDecode + remAbs;
- toDecode = circshift(mod(abs(toDecode),2), [0,-i+1]);
- decodedPcks(l,:) = toDecode;
- break;
- else
- if(i-1 == k)
- disp("Blad, nie mozna naprawic wiecej niz 1 bledu");
- break
- end
- i = i+1;
- toDecode = circshift(toDecode, [0, 1]);
- end
- end
- end
- disp(decodedPcks);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement