⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genhmm.m

📁 一本关于dsp的原著教材
💻 M
字号:
function [x,stateSeq] = genhmm(means,vars,transitions)% GENHMM Generation of a random sequence from a Markov Model%%    [X,STATESEQ] = GENHMM(MEANS,VARS,TRANSITIONS) returns a 2-dimensional%    sequence X (one observation per row) and a state sequence STATESEQ%    drawn from a Markov model with N states having means MEANS and%    variances VARS (stored in N elements lists with empty matrices as first%    and last elements to symbolize the entry and exit states) and%    transition matrix TRANSITIONS.%      Alternately, GENHMM(HMM) can be used, where HMM is an object of the%    form:%       HMM.means = MEANS;%       HMM.vars = VARS;%       HMM.trans = TRANSITIONS%if nargin == 1,  model = means;  means = model.means;  vars = model.vars;  transitions = model.trans;end;dim = length(means{2});numStates = length(means);for i=2:(numStates-1),  stDevs{i} = sqrtm(vars{i});end;stDevs{1} = [];stDevs{numStates} = [];% Generate the emitting states sequencestateSeq(1) = 1; % Begin with entry statet = 1;while (stateSeq(t) ~= numStates),  t = t+1;  stateSeq(t) = pickState( transitions(stateSeq(t-1),:) );end;% Pick values in emitting states pdfs, omitting the entry statefor t = 2:(length(stateSeq)-1);  x(t-1,:) = randn(1,dim) * stDevs{stateSeq(t)} + means{stateSeq(t)}';end;%=============================================function [stat] = pickState(localTransitions)cs = cumsum(localTransitions);if ( (cs(end) - 1.0) > (eps/2) ),  error('Bad transition probability values given to subroutine pickState.');end;unif = rand;stat = 1;while ( unif >= cs(stat) ),  stat = stat+1;end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -