% Markov proba A = [0.2 0.6 0.2; 0.3 0 0.7; 0.5 0 0.5]; randomWalk = zeros(1, 1000); randomWalk(1) = 2; x = [1 2 3]; for i = 2 : 1000 lastState = randomWalk(i-1); r = rand; if (lastState == 1) if (r < 0.2) randomWalk(i) = 1; elseif (r < 0.8) randomWalk(i) = 2; else randomWalk(i) = 3; end elseif (lastState == 2) if (r < 0.3) randomWalk(i) = 1; else randomWalk(i) = 3; end elseif (lastState == 3) if (r < 0.5) randomWalk(i) = 1; else randomWalk(i) = 3; end end numHamburger = numel(find(randomWalk==1)); percentHamburger = (numHamburger / i) * 100; numPizza = numel(find(randomWalk==2)); percentPizza = (numPizza / i) * 100; numHotdog = numel(find(randomWalk==3)); percentHotdog = (numHotdog / i) * 100; y1 = [numHamburger numPizza numHotdog]; y2 = [percentHamburger percentPizza percentHotdog]; xticks = ([1 2 3]); xticklabels = ({'A', 'B', 'C'}); subplot(1,2,1), bar(x,y1) title('Numbers'), xlabel(i) axis([0.5 3.5 0 500]) text(x(1),y1(1),num2str(numHamburger, '%0.0f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') text(x(2),y1(2),num2str(numPizza, '%0.0f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') text(x(3),y1(3),num2str(numHotdog, '%0.0f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') subplot(1,2,2), bar(x,y2) title('Percentages'), xlabel(i) axis([0.5 3.5 0 100]) text(x(1),y2(1),num2str(percentHamburger, '%0.1f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') text(x(2),y2(2),num2str(percentPizza, '%0.1f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') text(x(3),y2(3),num2str(percentHotdog, '%0.1f'), ... 'HorizontalAlignment','center', 'VerticalAlignment','bottom') if rem(i,1) == 0 drawnow end end