gusucode.com > Matlab实现的隐马尔科夫树模型源码程序 > contourletHMT/generate_model.m
% generate_model.m % written by: Duncan Po % Date: August 24, 2002 % Generate a random model % Usage: model = generate_model(nstates, nlevels, zeromean, levndir) % Inputs: nstates - number of states in the model % nlevels - number of levels in the model % zeromean - 'yes' for zero mean model and 'no' for non-zeromean model % levndir - the number of subbands in each level (e.g. [2 2 3 3]) % Output: model - the model generated function model = generate_model(nstates, nlevels, zeromean, levndir) model.nstates = nstates; model.nlevels = nlevels; model.zeromean = zeromean; model.rootprob = rand(1,nstates); model.rootprob = model.rootprob./sum(model.rootprob); for l = 1:nlevels-1 for k = 1:2.^(levndir(l+1)-levndir(1)) model.transprob{l}{k} = rand(nstates); for m = 1:nstates model.transprob{l}{k}(:, m) = model.transprob{l}{k}(:, m)... ./sum(model.transprob{l}{k}(:, m)); end; end; end; for l = 1:nlevels for k = 1:2.^(levndir(l)-levndir(1)) if strcmp(zeromean, 'yes') == 0 model.mean{l}{k} = rand(1,nstates); for m = 1:nstates model.mean{l}{k}(m) = model.mean{l}{k}(m)*(10.^m); end; end; model.stdv{l}{k} = rand(1, nstates); for m = 1:nstates model.stdv{l}{k}(m) = model.stdv{l}{k}(m)*(10.^m); end; end; end;