%% Meng Yee CHUAH
% Week 3 - Random Systems
close all; clear all; clc;
%% 6.2(c)
n = 1e5;
x = zeros(2,n);
y = zeros(2,n);
for i = 1:n
x(:,i) = mod(8121*rand(2,1)+28411,134456)/134456; % Initial seed generated by MATLAB (irony)
y(:,i) = [sqrt(-2*log(x(1,i)))*sin(x(2,i)); sqrt(-2*log(x(1,i)))*cos(x(2,i))];
end
C1 = mean(y,2)
C2 = mean(y.^2,2)-mean(y,2).^2
C3 = mean(y.^3,2)-3.*C1.*C2-C1.^3
%% 6.4(d)
n = 1000;
x = 2^13-1; % Use 13 bits to store the information for an order 12 maximal LFSR
% dec2bin(x)
w = zeros(n,10);
for j = 1:10
wn = 0; % Initial position of random walker
for i = 1:n
xn = mod(bitget(x,2)+bitget(x,5)+bitget(x,7)+bitget(x,13),2);
x = bitshift(x,1,13);
x = bitset(x,1,xn);
% dec2bin(x)
if xn==1
wn = wn+1;
else
wn = wn-1;
end
w(i,j) = wn;
end
end
figure('Units','inches','Position',[0 0 6 4.5]);
e = 1.5*std(w,1,2);
h = errorbar(zeros(1,n),e,'.','Color',0.9*ones(1,3));
hh = get(h,'children'); % Retrieve info from errorbar plot
xh = get(hh(2),'xdata'); % Get xdata from errorbar plot
wh = 2;
xh(4:9:end) = xh(1:9:end)-wh/2; % Change xdata with respect to ratio
xh(7:9:end) = xh(1:9:end)-wh/2;
xh(5:9:end) = xh(1:9:end)+wh/2;
xh(8:9:end) = xh(1:9:end)+wh/2;
set(hh(2),'xdata',xh(:)) % Change error bars on the figure
hold on;
plot(w);
xlim([0 n]); title('6.4(d) Positon of a random walker in 1D');
xlabel('Time'); ylabel('Position');
saveas(gcf,'6-4(d) Positon of a random walker in 1D.png');
saveas(gcf,'6-4(d) Positon of a random walker in 1D.fig');