Find pulse width and cycle & .mfile read/plot

5 次查看(过去 30 天)
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 个评论
Star Strider
Star Strider 2012-7-17
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?

请先登录,再进行评论。

回答(2 个)

Honglei Chen
Honglei Chen 2012-7-17
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 2012-7-17
编辑:Greg Dionne 2012-7-17
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!

Translated by