Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clear;
- % Functions
- function r = myXor(a, b)
- if(a == b)
- r = 0;
- else
- r = 1;
- end
- end
- function randomSignal = generateRandomSignal(length)
- randomSignal = rand(length, 1);
- for i = 1:numel(randomSignal)
- if(randomSignal(i) < 0.5)
- randomSignal(i) = 0;
- else
- randomSignal(i) = 1;
- end
- end
- end
- function scrambledSignal = scrambleSignal(signal)
- register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0];
- registerLength = numel(register);
- scrambledSignal = [];
- for z = 1:numel(signal)
- xoredLastRegisterNumbers = myXor(register(registerLength - 1), register(registerLength));
- %rotate register to the right
- for i = registerLength:-1:2
- register(i) = register(i - 1);
- end
- register(1) = xoredLastRegisterNumbers; # asign first value
- %
- newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
- scrambledSignal = [scrambledSignal, newOutBit];
- end
- end
- function subsequenceMap = countSubsequences(singal, digit)
- subsequenceMap = [];
- counter = 0;
- signalLength = numel(singal);
- for i = 1:numel(singal)
- if(singal(i) == digit)
- counter++;
- else
- if(counter != 0)
- subsequenceMap = [subsequenceMap, counter];
- end
- counter = 0;
- end
- end
- if(counter != 0)
- subsequenceMap = [subsequenceMap, counter];
- end
- end
- function scrambledSignal = scrambleSignalV34(signal)
- register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0];
- registerLength = numel(register);
- scrambledSignal = [];
- for z = 1:numel(signal)
- xoredLastRegisterNumbers = myXor(register(registerLength - 5), register(registerLength));
- %rotate register to the right
- for i = registerLength:-1:2
- register(i) = register(i - 1);
- end
- %
- newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
- register(1) = newOutBit; # asign first value
- scrambledSignal = [scrambledSignal, newOutBit];
- end
- end
- function descrambledSignal = descrambleSignalV34(signal)
- register = [1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0];
- registerLength = numel(register);
- descrambledSignal = [];
- for z = 1:numel(signal)
- xoredLastRegisterNumbers = myXor(register(registerLength - 5), register(registerLength));
- %rotate register to the right
- for i = registerLength:-1:2
- register(i) = register(i - 1);
- end
- %
- newOutBit = myXor(xoredLastRegisterNumbers, signal(z));
- register(1) = signal(z); # asign first value
- descrambledSignal = [descrambledSignal, newOutBit];
- end
- end
- function monitorScrambler(signalLength)
- zerosSignal = zeros(signalLength, 1); # same 0
- onesSignal = ones(signalLength, 1); # same 1
- randomSignal = generateRandomSignal(signalLength); # randomowe 0 i 1
- zerosSignal = scrambleSignal(zerosSignal);
- onesSignal = scrambleSignal(onesSignal);
- randomSignal = scrambleSignal(randomSignal);
- % a)
- subplot(2,2,1);
- hist(countSubsequences(zerosSignal, 0));
- title('Same 0');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 0');
- % b)
- subplot(2,2,2);
- hist(countSubsequences(onesSignal, 1));
- title('Same 1');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 1');
- % c)
- subplot(2,2,3);
- hist(countSubsequences(randomSignal, 0));
- title('Losowe');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 0');
- subplot(2,2,4);
- hist(countSubsequences(randomSignal, 1));
- title('Losowe');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 1');
- end
- function areEqual = compareArrays(a, b)
- areEqual = true;
- for z = 1:numel(a)
- if(a(z) != b(z))
- areEqual = false;
- return
- end
- end
- end
- function monitorScramblerV34(signalLength)
- zerosSignal = zeros(signalLength, 1); # same 0
- onesSignal = ones(signalLength, 1); # same 1
- randomSignal = generateRandomSignal(signalLength); # randomowe 0 i 1
- scrambledZerosSignal = scrambleSignalV34(zerosSignal);
- scrambledOnesSignal = scrambleSignalV34(onesSignal);
- scrambledRandomSignal = scrambleSignalV34(randomSignal);
- descrambledZeros = descrambleSignalV34(scrambledZerosSignal);
- descrambledOnes = descrambleSignalV34(scrambledOnesSignal);
- descrambledRandom = descrambleSignalV34(scrambledRandomSignal);
- disp(compareArrays(descrambledZeros, zerosSignal));
- disp(compareArrays(descrambledOnes, onesSignal));
- disp(compareArrays(descrambledRandom, randomSignal));
- % a)
- subplot(2,2,1);
- hist(countSubsequences(scrambledZerosSignal, 0));
- title('Same 0');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 0');
- % b)
- subplot(2,2,2);
- hist(countSubsequences(scrambledOnesSignal, 1));
- title('Same 1');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 1');
- % c)
- subplot(2,2,3);
- hist(countSubsequences(scrambledRandomSignal, 0));
- title('Losowe');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 0');
- subplot(2,2,4);
- hist(countSubsequences(scrambledRandomSignal, 1));
- title('Losowe');
- ylabel('Ilosc wystapien');
- xlabel('Dlugosc cykli 1');
- end
- % Settings
- signalLength = 10*10;
- % Main
- %monitorScrambler(signalLength);
- monitorScramblerV34(signalLength);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement