File Exchange

image thumbnail

EM for HMM Multivariate Gaussian processes

version (21.5 KB) by Sebastien PARIS
A fast implementation of the EM Algorithm for HMM Multivariate Gaussian Mixture


Updated 27 Nov 2012

View Version History

View License

em_ghmm : Expectation-Maximization algorithm for a HMM with Multivariate Gaussian measurement

[logl , PI , A , M , S] = em_ghmm(Z , PI0 , A0 , M0 , S0 , [options]);


Z Measurements (m x K x n1 x ... x nl)

PI0 Initial probabilities (d x 1) : Pr(x_1 = i) , i=1,...,d. PI0 can be (d x 1 x v1 x ... x vr)

A0 Initial state transition probabilities matrix Pr(x_{k} = i| x_{k - 1} = j) such
sum_{x_k}(A0) = 1 => sum(A , 1) = 1. A0 can be (d x d x v1 x ... x vr).

M0 Initial mean vector. M0 can be (m x 1 x d x v1 x ... x vr)

S0 Initial covariance matrix. S0 can be (m x m x d x v1 x ... x vr)

options nb_ite Number of iteration (default [30])
update_PI Update PI (0/1 = no/[yes])
update_A Update PI (0/1 = no/[yes])
update_M Update M (0/1 = no/[yes])
update_S Update S (0/1 = no/[yes])


logl Final loglikelihood (n1 x ... x nl x v1 x ... x vr)

PI Estimated initial probabilities (d x 1 x n1 x ... x nl v1 x ... x vr)

A Estimated state transition probabilities matrix (d x d x n1 x ... x nl v1 x ... x vr)

M Estimated mean vector (m x 1 x d x n1 x ... x nl v1 x ... x vr)

S Estimated covariance vector (m x m x d x n1 x ... x nl v1 x ... x vr)

Please run mexme_em_ghmm to compile mex files on your platform.

Run test_em_ghmm for demo

Cite As

Sebastien PARIS (2021). EM for HMM Multivariate Gaussian processes (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (14)

Federico Gargiulo

Hi, I have this error: PI must be (d x 1 x v1 x ... x vr ). I tried to put different dimension, but nothing works. What is the correct dimension?

Xue Zhang

Hi, thanks for sharing. Can this code now be used in Multivariate gaussion distribution? I mean, the observations at specified timepoint is a signal map of different gaussion distribution?

Sebastien PARIS


No you can't model more than one gaussian .... sorry


Can this code be used for HMM based speech recognition (training and recognition) or does it need tweaking via Rabiners paper? I assume for speech you would need more than one gaussian per state?

mepe mepe

Ok, thank you for the quick response!

Sebastien PARIS

Unfortunatly, you can't do this job with this code ....

mepe mepe

How can I use your code for multvariate gaussian mixtures? I mean that every state of the HMM can have multiple gaussians. Can you please post an example?

Sebastien PARIS

Have a look to :

Lawrence R. Rabiner (February 1989). "A tutorial on Hidden Markov Models and selected applications in speech recognition". Proceedings of the IEEE 77 (2): 257–286.



Would you mind putting on the reference paper you used? Thanks.


wang linghua

Sebastien PARIS

Please read instructions how to compile mex-files in the top of each *.c files. eg. "mex -setup" and 'mex foo.c"

wang linghua

??? Invalid MEX-file 'D:\mtlwork\em_ghmm\sample_ghmm.dll': 找不到指定的程序。
Error in ==> test_em_ghmm at 19
[Ztrain , Xtrain]= sample_ghmm(Ntrain , PI , A , M , S , L);

liudaohai liudaohai

mex -output em_ghmm.dll em_ghmm.c

mex -f mexopts_intel10amd.bat -output em_ghmm.dll em_ghmm.c

??? Error using ==> mex
Unable to complete successfully

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!