Consider the following:
%# number of states N = 11; %# some random transition matrix trans = rand(N,N); trans = bsxfun(@rdivide, trans, sum(trans,2)); %# fake emission matrix (only one symbol) emis = ones(N,1); %# get a sample of length = 10 [~,states] = hmmgenerate(10, trans, emis)
The sequence of states generated:
>> states states = 10 1 3 11 9 4 11 1 4 6
EDIT:
In fact working with a Markov chain is relatively easy, that we can do it ourselves. Here is another example without using HMM functions from the stats toolbox.
%# number of states N = 3; %# transition matrix trans = rand(N,N); trans = bsxfun(@rdivide, trans, sum(trans,2)); %# probability of being in state i at time t=0 prior = rand(1,N); prior = prior ./ sum(prior); %# generate a sequence of states len = 100; %# length of sequence states = zeros(1,len); states(1) = randsample(N, 1, true, prior); for t=2:len states(t) = randsample(N, 1, true, trans(states(t-1),:)); end %# show sequence stairs(states, 'LineWidth',2) set(gca, 'YGrid','on', 'YLim',[0 N+1]) xlabel('time'), ylabel('states') title('sequence of states')

I am using RANDSAMPLE function to sample at each iteration. If you want to use only core functions (no toolboxes), see Weighted random numbers in MATLAB for an alternative.