Help with Signal Pattern Recognition using HMM

7 views (last 30 days)
Matt
Matt on 11 Apr 2013
Commented: Vimalraj PM on 28 Jun 2018
Hi all, I am trying to use a HMM with the HMM Statistics Toolbox to recognize patterns in waveforms. What I am doing is similar but simpler than speech pattern recognition so I know it can be done. We are measuring current draw of appliances during start up, steady state operation, and shut down. I have measured signatures, and want to have a model that can recognize new incoming signals and categorize them to either of the three, or come back that it is neither of the three.
There will be three events: Start up, Steady State, and Shut Down for each device.
I have discrete integer (converted to that) vectors of the signals for each event, and wish to use a discrete HMM (at least to get started). However, I am having a lot of difficulty understanding how to implement this. I have been reading and researching HMM's for a couple weeks and haven't made much progress. I really need some help.
I'm pretty sure my emission matrix will be a row vector containing my signal I want to match, or train the model to, correct? This will be the signatures I already have measured.
My real confusion is what should the transition matrix be? Is the "state" the current step, or state in time, or is it the current condition (start, steady, turn off)? I'm playing around with the Markov Model toolbox but some guidance would be greatly appreciated. Right now I am trying to train or estimate transition and emission matrices using my signal as the sequence "seq" and a vector from 1 to the length of the sequence at my state vector.
I know this isn't a hard problem but I can't figure it out. I am also a ME trying to do a EE's work right now which doesn't help much.
Thanks!
  2 Comments
Matt
Matt on 11 Apr 2013
I have been able to use hmmestimate, using my recorded signal vector that was quantized into integers as the sequence and a states vector containing [1:1:length(signal_vector)] as states to estimate a transmission and emission matrix. I did: [TRANS, EMIS] = hmmestimate(signal_vector, states)
Then I used [sequence, state] = hmmgenerate(length(signal_vector), TRANS, EMIS) to generate a sequence.
When I plot the sequence and states outputted by hmmgenerate I get exactly the same as the sequence and state vector used in hmmestimate, so I think I am on the right track.
Vimalraj PM
Vimalraj PM on 28 Jun 2018
Hi matt,i am working on the same problem,can u please guide me

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!