Find pulse width and cycle & .mfile read/plot

5 views (last 30 days)
Ken
Ken on 17 Jul 2012
Sorry my English is pool.
1.- I using Matlab R2012a function: (1)pulseperiod (2)dutycycle
to determine my square pulse's width and between pulse (n) and pulse (n+1) 's time, respectively.
But, the level(thereshold) is calculate from pulse 1, so pulse 2 used pulse 1's level.
When the pulse high and low,how can I set every pulse's level make it's mark high and low?
And a question, using the two functions some pulse were not determined? Lost/miss some mark.
2.- I read the data .m file from: http://www.physionet.org/cgi-bin/atm/ATM I use importdata and plot can draw picture. But, I want to know another function can read and draw the file's picture?
How can I solve these questions?
Hope you can see my question's picture(There are 3 pictures: Goal, duty cycle, pulseperiod). picture url: http://www.flickr.com/photos/82814421@N08/sets/72157630615535728/
I really need help with these. Anybody know how could I do the function?
  1 Comment
Star Strider
Star Strider on 17 Jul 2012
The ‘pulseperiod’ and ‘dutycycle’ functions may not be appropriate for EKG analysis, especially an EKG as abnormal as the one pictured. (Figure 001 is a truly bizarre EKG tracing. It appears to be a multifocal arrythmia in a very sick heart.) Also, the square pulses labeled ‘QRS’ do not line up with the QRS complexes in the EKG tracing above it.
What record did you request from the Physionet site? What do want to do with it?

Sign in to comment.

Answers (2)

Honglei Chen
Honglei Chen on 17 Jul 2012
The functions pulseperiod and dutycycle assumes that the signal is bi-level and they are statistical measurement. Therefore, what they do is to take the entire signal, look at the histogram and then decide the high and low level for the entire signal. The entire signal then get measured based on those levels.
If you have to deal with one pulse a time, you will have to parse your pulse yourself. All you need to do is to pass in one pulse a time.

Greg Dionne
Greg Dionne on 17 Jul 2012
Edited: Greg Dionne on 17 Jul 2012
Based upon your second and third pictures, it seems your signal has a low level of 0 and reaches an amplitude of at least 0.5 for the each of the pulses you displayed. If this is true for your entire signal, you can use pulseperiod to obtain an approximate estimate.
You can do this by:
  1. using manual state levels ([0 0.5])
  2. increasing the state level tolerance (from 2% to 10%).
Try something like:
pulseperiod(X, 'tolerance', 10, 'StateLevels', [0 0.5])

Community Treasure Hunt

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

Start Hunting!