Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. clear;
  2.  
  3. % Functions
  4. function r = myXor(a, b)
  5. if(a == b)
  6. r = 0;
  7. else
  8. r = 1;
  9. end
  10. end
  11.  
  12. function randomSignal = generateRandomSignal(length)
  13. randomSignal = rand(length, 1);
  14.  
  15. for i = 1:numel(randomSignal)
  16.  
  17. if(randomSignal(i) < 0.5)
  18. randomSignal(i) = 0;
  19. else
  20. randomSignal(i) = 1;
  21. end
  22.  
  23. end
  24.  
  25. end
  26.  
  27. function scrambledSignal = scrambleSignal(signal)
  28. register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0];
  29. registerLength = numel(register);
  30. scrambledSignal = [];
  31.  
  32. for z = 1:numel(signal)
  33. xoredLastRegisterNumbers = myXor(register(registerLength - 1), register(registerLength));
  34.  
  35. %rotate register to the right
  36. for i = registerLength:-1:2
  37. register(i) = register(i - 1);
  38. end
  39. register(1) = xoredLastRegisterNumbers; # asign first value
  40. %
  41.  
  42. newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
  43.  
  44. scrambledSignal = [scrambledSignal, newOutBit];
  45. end
  46.  
  47. end
  48.  
  49. function subsequenceMap = countSubsequences(singal, digit)
  50.  
  51. subsequenceMap = [];
  52.  
  53. counter = 0;
  54. signalLength = numel(singal);
  55. for i = 1:numel(singal)
  56. if(singal(i) == digit)
  57. counter++;
  58. else
  59. if(counter != 0)
  60. subsequenceMap = [subsequenceMap, counter];
  61. end
  62. counter = 0;
  63. end
  64. end
  65.  
  66. if(counter != 0)
  67. subsequenceMap = [subsequenceMap, counter];
  68. end
  69.  
  70. end
  71.  
  72. function scrambledSignal = scrambleSignalV34(signal)
  73. register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0];
  74. registerLength = numel(register);
  75. scrambledSignal = [];
  76.  
  77. for z = 1:numel(signal)
  78. xoredLastRegisterNumbers = myXor(register(registerLength - 5), register(registerLength));
  79.  
  80. %rotate register to the right
  81. for i = registerLength:-1:2
  82. register(i) = register(i - 1);
  83. end
  84. %
  85.  
  86. newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
  87.  
  88. register(1) = newOutBit; # asign first value
  89.  
  90. scrambledSignal = [scrambledSignal, newOutBit];
  91. end
  92.  
  93. end
  94.  
  95. function descrambledSignal = descrambleSignalV34(signal)
  96. register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0];
  97. registerLength = numel(register);
  98. descrambledSignal = [];
  99.  
  100. for z = 1:numel(signal)
  101. xoredLastRegisterNumbers = myXor(register(registerLength - 5), register(registerLength));
  102.  
  103. %rotate register to the right
  104. for i = registerLength:-1:2
  105. register(i) = register(i - 1);
  106. end
  107. %
  108.  
  109. newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
  110.  
  111. register(1) = signal(z); # asign first value
  112.  
  113. descrambledSignal = [descrambledSignal, newOutBit];
  114. end
  115.  
  116. end
  117.  
  118. function monitorScrambler(signalLength)
  119. zerosSignal = zeros(signalLength, 1); # same 0
  120. onesSignal = ones(signalLength, 1); # same 1
  121. randomSignal = generateRandomSignal(signalLength); # randomowe 0 i 1
  122.  
  123. zerosSignal = scrambleSignal(zerosSignal);
  124. onesSignal = scrambleSignal(onesSignal);
  125. randomSignal = scrambleSignal(randomSignal);
  126.  
  127. % a)
  128. subplot(2,2,1);
  129. hist(countSubsequences(zerosSignal, 0));
  130. title('Same 0');
  131. ylabel('Ilosc wystapien');
  132. xlabel('Dlugosc cykli 0');
  133.  
  134. % b)
  135. subplot(2,2,2);
  136. hist(countSubsequences(onesSignal, 1));
  137. title('Same 1');
  138. ylabel('Ilosc wystapien');
  139. xlabel('Dlugosc cykli 1');
  140.  
  141. % c)
  142. subplot(2,2,3);
  143. hist(countSubsequences(randomSignal, 0));
  144. title('Losowe');
  145. ylabel('Ilosc wystapien');
  146. xlabel('Dlugosc cykli 0');
  147.  
  148. subplot(2,2,4);
  149. hist(countSubsequences(randomSignal, 1));
  150. title('Losowe');
  151. ylabel('Ilosc wystapien');
  152. xlabel('Dlugosc cykli 1');
  153.  
  154. end
  155.  
  156. function areEqual = compareArrays(a, b)
  157. areEqual = true;
  158.  
  159. for z = 1:numel(a)
  160. if(a(z) != b(z))
  161. areEqual = false;
  162. return
  163. end
  164. end
  165.  
  166. end
  167.  
  168. function monitorScramblerV34(signalLength)
  169. zerosSignal = zeros(signalLength, 1); # same 0
  170. onesSignal = ones(signalLength, 1); # same 1
  171. randomSignal = generateRandomSignal(signalLength); # randomowe 0 i 1
  172.  
  173. scrambledZerosSignal = scrambleSignalV34(zerosSignal);
  174. scrambledOnesSignal = scrambleSignalV34(onesSignal);
  175. scrambledRandomSignal = scrambleSignalV34(randomSignal);
  176.  
  177. descrambledZeros = descrambleSignalV34(scrambledZerosSignal);
  178. descrambledOnes = descrambleSignalV34(scrambledOnesSignal);
  179. descrambledRandom = descrambleSignalV34(scrambledRandomSignal);
  180.  
  181. disp(compareArrays(descrambledZeros, zerosSignal));
  182. disp(compareArrays(descrambledOnes, onesSignal));
  183. disp(compareArrays(descrambledRandom, randomSignal));
  184.  
  185. % a)
  186. subplot(2,2,1);
  187. hist(countSubsequences(scrambledZerosSignal, 0));
  188. title('Same 0');
  189. ylabel('Ilosc wystapien');
  190. xlabel('Dlugosc cykli 0');
  191.  
  192. % b)
  193. subplot(2,2,2);
  194. hist(countSubsequences(scrambledOnesSignal, 1));
  195. title('Same 1');
  196. ylabel('Ilosc wystapien');
  197. xlabel('Dlugosc cykli 1');
  198.  
  199. % c)
  200. subplot(2,2,3);
  201. hist(countSubsequences(scrambledRandomSignal, 0));
  202. title('Losowe');
  203. ylabel('Ilosc wystapien');
  204. xlabel('Dlugosc cykli 0');
  205.  
  206. subplot(2,2,4);
  207. hist(countSubsequences(scrambledRandomSignal, 1));
  208. title('Losowe');
  209. ylabel('Ilosc wystapien');
  210. xlabel('Dlugosc cykli 1');
  211.  
  212. end
  213.  
  214.  
  215. % Settings
  216. signalLength = 10*10;
  217.  
  218. % Main
  219. %monitorScrambler(signalLength);
  220. monitorScramblerV34(signalLength);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement