function [prob term_prob] = transProbEXAMPLE(filename, leader, follower) % % function [prob term_prob] = transProbEXAMPLE(filename, leader, follower) % % 'filename' is plain text file containing matrix % will compute transition probability from 'leader' to 'follower' % i.e. how often 'leader' is immediately followed by 'follower' % % returns 'prob' - 'leader' -> 'follower' transition probability % 'term_prob' - probability that 'leader' is last element % in its row data = dlmread(filename); % pass info in 'filename' to variable 'data' % dlmread will store ASCII file in matrix % % could also have used load(), which is meant % for .mat (MATLAB file format) files, but will % store contents of ASCII files in a matrix also % initialize empty counting vectors % would be best to preallocate vector lengths % but we don't really know how long these vectors % will be track_trans = []; % for tracking instances when 'leader' is % followed by 'follower' track_terms = []; % for tracking instances when 'leader' % terminates the line [data_row, data_col] = size(data); % save dimensions of 'data' % to use for looping % loop over 'data' rows for row = 1:data_row % loop over 'data' columns for col = 1:data_col % look for instances of 'leader' if data(row, col) == leader % check if 'leader' terminates line if col == data_col % if yes, add 1 to counting vector track_terms = [track_terms 1]; % grow vector by % redefining it as % itself appended with % a 1 (remember these % counting vectors % start out empty) % see if next element is 'follower' elseif data(row, col + 1) == follower % if yes, add 1 to counting vector track_trans = [track_trans 1]; end end end end % count total number of instances of 'leader' % find() will return indices of 'data' that contain 'leader' % thus, the length of the vector returned by find() gives the total % number of 'leader's in 'data' % could also have used: % total_leader = sum(sum(data == leader)); % but find() is a very useful function to know about total_leader = length(find(data == leader)); % count number of times 'follower' followed 'leader' count_trans = sum(track_trans); % calculate probability that 'follower' follows 'leader' prob = count_trans/total_leader; % count number of times 'leader' terminated line terminations = sum(track_terms); % calculate probability that 'leader' terminates line term_prob = terminations/total_leader;