Discrete signal recognition from continuous waveform

Hi Folks,
I'm hoping some of you can give some general pointers on how to better approach this problem. This is the first application I will be actively performing waveform analysis so forgive the amateurishness.
Anyway I'm acquiring a physiological signal at 50Hz and attempting to recognize 'breaths' from this source. The problem is that the frequency, amplitude, and offset will vary depending on the rate and depth of breath (among other things). Below are the ranges I'm working with (in units of "WC pressure):
Freq: 10mHz-500mHz
Amp: 0.005 to 0.145 "WC
Offset: -0.25 to -1.0"WC
In general, I'm trying to reliably get a measure on each breath's amplitude (and offset, but that's easy) and frequency. I have tried two methods: to isolate each breath and analyze, or to buffer say 10seconds worth of signal and analyze. The problem mostly comes in when I try to use the "Pulse Measurements" and "Amplitude and Levels" vi's as part of the analysis package. The way in which they perform their calculation relies on set crossing thresholds - if the signal jumps in amplitude or quickly changes frequency (not likely) and I'm using the buffer approach, I lose calculation on the buffer. Obviously using a fixed buffer size (can) give different results depending on the frequency of the signal.
It's amazing how we (as humans... right?) can discern the breaths from this signal, how we can easily identify problematic shapes, but to do this programatically, it's a completely different story.
I'm just unsure how to better approach this - should i be trying to fit an ideal curve to every group of samples? Attached is a screenshot of ideal (at two distinct rates) and actual.
Message Edited by 8bitbanger on 07-10-2009 02:19 PM
v2009 devel. w/RT
Attachments:
inWC_actual.PNG ‏44 KB
inWC_ideal.PNG ‏43 KB

First, I would filter out the small quick changes is the waveform (unless they are significant to what you are doing or you consider them to be a  breath).
In the past, I have tried to heavily filter respiration down to a sinusoid signal and then take the Hilbert transform to create an analytic signal (f(t) + jH{f(t)}).  Take a look at the derivative of the phase of this signal which is equivalent to its instantaneous frequenc.
Take a look at attached.   I saved data into the Data In control for you to use as an example.  This data is monkey respiration, so it is a little faster than human. Play around with the filters to see what is best for your data.  Hopefully, this will be of some help.
Randall Pursley
Attachments:
Resp Rate.vi ‏269 KB

Similar Messages

  • Discrete signal to a continuous signal

    Hi to all,
    I'm having this problem with the signal processing, and I hope you could help me...
    I have a discrete signal, that is a capturated  with a PIC controller. Now I need that this signal become a continuous signal, so I can use a lot of other VI that I can't use when I have points.
    How can I transform the discrete signal in a continuous one?
    Thanks in advance,
    Ricardo.

    Hi,
    I don't know what you mean exactly. A solution to yopur problem might be just to build an array with your points. To do that you can use the LabVIEW function called build array.
    Hope this help.
    Regards,
    ClémentG

  • How to extract the signal out from the waveform by my designated power level?

    Dear all,
         How can  I extract the signal from the waveform accroding to the power level? I read the Trigger&Gate.vi, but this vi extract signal according to the duration time. I want to extract signal according to power level.
         As shown in the following figures, the signal I want to process is between 130000 to 140000, if I zoom in, I can see the the useful signal is between 135400 to 138200. The question is how to extract the signal in the zone?  
        I tried the sub_NoiseEst_And_Chop_Shell.vi in the Packet_based_link example too, but this subvi seemed to be a little slow. Can anybody give me better advice? Thanks in advance!
    Solved!
    Go to Solution.

    I was working on something similar but haven't had time to fully develop it.
    My idea was to use an envelope detector (low pass filter) and then use an energy detection VI on the envelope.
    Here's where I left off
    Anthony F.
    Product Marketing Engineer
    National Instruments
    Attachments:
    test.vi ‏331 KB

  • How to control individual channel of signal generated from digital waveform generator?

    Digital waveform generator has 8 channels. I need to generate two different signals to HSDIO. How to modify and control two different channels? Also, how to translate pin outs from PXI-6541 to channels? I need to control signal into pin 1,3,29,and 31 individually.
    Thank you!!
    Solved!
    Go to Solution.

    You must combine your individual data into an array.  The digital waveform is simply a digital representation of the binary array.  It still boils down to bit 0 of each array element going to channel 0 (or the first channel you specify in Create Dynamic Channels).  The next bit goes to the next channel.  My last post is quite clear.  To display the array in binary, right click on an array element, then select Display Format, then select Binary.  You can also right click on the element, select Visible, then select Show Radix to display the small b before the number.  One more thing, in the Display Format window, uncheck the box next to Use minimum field width.  Then set the numeric just under the box to 8.  Then select Pad with zeros on left in the box below.
    You should not use waveforms until you learn more about how the HSDIO operates on input data.  It isn't hard to combine waveforms, but it also isn't as clear as using an array of U8 or U16 or U32.
    Trying to explain further.  The first number to be writen to the HSDIO will have this effect:  Bit 0 (LSB) of the number gets written to the first HSDIO channel you specify.  Bit 7 goes to the 8th channel you specify.  If you don't specify 8 channels, the bits get ignored.  So wiring in one number will produce only one bit on each channel.  In other words, the number already combines the bits of all the channels you specify.  You don't combine anything yourself.  Look again at my picture on my last post.  By wiring in an array, you cause a bit pattern to be generated.
    I hope this is more clear.
    - tbob
    Inventor of the WORM Global

  • Acquire continuous waveforms from two channels on a scope

    Hello,
    I want to acquire a continuous waveform on each separate channel on my scope, and to see each waveform on it's own graph.
    I tried to do it, you can see the VI that I uploaded...
    The problem is whan I run the VI - it works, but each graph refreshs in it's time and it doesn't happen simultaneously.
    It's a problem because it creates a situation that I can loose a waveform because while one graph is refreshing the other one is not refreshing.
    What can I do?
    Attachments:
    Tektronix TDS 200 1000 2000 Series Acquire Continuous Waveform 2 Channel.vi ‏35 KB

    You are using serial communication. This sort of communication is very slow. So I doubt you will not get much data in real time. You are probably only getting segments of the realtime curve.
    Besides which, my opinion is that Express VIs Carthage must be destroyed deleted
    (Sorry no Labview "brag list" so far)

  • How to trigger temperature acquisition (6024E) at the start of signal generation from NI5411?

    I'd like to begin/end acquiring temperature data with the 6024E after the start/stop of the signal output from the 5411. What is the best way to accomplish this? is software or hardware triggering better?

    Rudy,
    Using a hardware trigger is definitely the more precise method. I would suggest that you consider using markers from the NI 5411 to trigger the NI 6024E. Information concerning this topic is available in the NI Signal Generators Help. Specifically, it is available in the following location:
    Contents >> NI Signal Generators Help >> Devices >> NI 5411 >> Waveform Generation >> Marker Events
    If you do not have the NI Signal Generators Help, it can be downloaded from the following location:
    NI Signal Generators Help (NI 5401/5404/5411/5421/5431)
    Once you have exported the appropriate makers, numerous examp
    le programs exist that demonstrate how to trigger the NI 6024E. If you are using LabVIEW, I would suggest that you examine the Acquire N Scans Digital Trig.vi example.
    Good luck with your application.
    Spencer S.

  • Taking snapshot of continuous waveform in oscillosco​pe

     my project was -labview front panel has to take the snapshots of the continuous waveform generated from oscilloscope.My front panel is able to take the main graph (which is not rolling or moving ) in oscilloscope and save it in a file in the form of jpeg file.but my main theme is -front panel has to take snapshots of the  continuous  waveform and save those it in a file in jpeg form .

    northridge wrote:
     my project was -labview front panel has to take the snapshots of the continuous waveform generated from oscilloscope.My front panel is able to take the main graph (which is not rolling or moving ) in oscilloscope and save it in a file in the form of jpeg file.but my main theme is -front panel has to take snapshots of the  continuous  waveform and save those it in a file in jpeg form .
    See to the below thread, if I had understood your requirement correctly.
    http://forums.ni.com/ni/board/message?board.id=Bre​akPoint&message.id=1020&view=by_date_ascending&pag​...
    Else, post some code for us to help you more...
    - Partha
    LabVIEW - Wires that catch bugs!

  • Y/t - graphic: discrete values are displayed continuously

    Whenever I want to display discrete values in a y/t - graphic, they are displayed continuously (adjacent function values are connected)
    See for example:
    The lower graphic should show the following discrete function:
    x | (fx)
    ---|--------
    2 | 0
    3 | 1.27
    4 | 0
    5 | 0
    6 | 0.64
    7 | 0
    8 | 0
    9 | 0.42
    But as you can see, adjacent function values are connected. I couldn't find out, how I can change that. Hope someone can helb me!
    thanks,
    Philipp
    Solved!
    Go to Solution.

    Excellent question and documentation! Thank you for making it very easy to answer your question.
    Click on the Paintbrush icon on the Y/t chart display - this is a link to the Colors and Lines properties for the chart display. Select Bar from the drop down list for Input 0.
    If you prefer a discrete symbol, choose from cross, square, circle, etc.
    - cj
    Measurement Computing (MCC) has free technical support. Visit www.mccdaq.com and click on the "Support" tab for all support options, including DASYLab.

  • I have a carillon 25 keyboard (bad choice, I know) and I can't get it to communicate with my mac at all! I'm running logic pro 9 and reason 5. I get signal in from my M Audio trigger finger so I know it isnt an entirely mac based problem. Thanks!!!

    I have a carillon 25 keyboard (bad choice, I know) and I can't get it to communicate with my mac at all! I'm running logic pro 9 and reason 5. I get signal in from my M Audio trigger finger so I know it isnt an entirely mac based problem. Thanks!!!

    Well, how have to determined no signal is being recieved to your mac?
    Have you got something that shows the actual signal? Or have you just been trying to control a VST? What software are you using by the way?
    I personnally went with a AKAI MPK25, because it's made already mapped for logic & ableton etc, so it just makes things incredibly easy.
    I would suggest you return it if you can as a dead unit & perhaps look at something else a bit easier?
    Otherwise, if you just want to get this working we can have a look a bit deeper.
    And driver? OS X driver?

  • Problem in signal extraction from ELVIS using biomedical startup kit

    hi,
    i am using executable version of biomedical startup kit 3.0. i want to use ECG signal. the problem is that i am using ELVIS for signal extraction from biomedical kit. but when i connect it with ELVIS, connected osciloscope with channel A0 and A1, but it showed no signal on osciloscope. can anybody tell me what can be the reason for that??? 

    Support for the Biomedical Toolkit is provided on our Biomedical User Group at www.ni.com/biomedusers
    Visit the NI Biomedical User Group at:
    www.ni.com/biomedusers

  • My daq 6008 wil not drop the 5V after the VI is stopped, i have a digital signal going from the error out on the daq in the while loop to the error in on the daq outside the while loop and a boolean going to the data of the daq outside

    my daq 6008 wil not drop the 5V on a digital output after the VI is stopped, i have a digital signal going from the error out on the daq in the while loop to the error in on the daq outside the while loop and a boolean going to the data of the daq outside, but i can t seemto get it to work

    i attached the block diagram so you can have a look
    Attachments:
    PID Temp control.docx ‏120 KB

  • During snoop. WARNING: received signal 11 from packet

    During snooping the local ip address on a V240. I saw this error:
    WARNING: received signal 11 from packet 780
    What does it mean? Is the hardware faulty? Is snoop faulty?
    The packet 780 was going outward and has xxxx in place of some data:
    ETHER: ----- Ether Header -----
    ETHER:
    ETHER: Packet 780 arrived at 15:16:38.22
    ETHER: Packet size = 696 bytes
    ETHER: Destination = xxxx,
    ETHER: Source = xxxx,
    ETHER: Ethertype = 0800 (IP)
    ETHER:
    IP: ----- IP Header -----
    IP:
    IP: Version = 4
    IP: Header length = 20 bytes
    IP: Type of service = 0x00
    IP: xxx. .... = 0 (precedence)
    IP: ...0 .... = normal delay
    IP: .... 0... = normal throughput
    IP: .... .0.. = normal reliability
    IP: .... ..0. = not ECN capable transport
    IP: .... ...0 = no ECN congestion experienced
    IP: Total length = 682 bytes
    IP: Identification = 52818
    IP: Flags = 0x4
    IP: .1.. .... = do not fragment
    IP: ..0. .... = last fragment
    IP: Fragment offset = 0 bytes
    IP: Time to live = 60 seconds/hops
    IP: Protocol = 6 (TCP)
    IP: Header checksum = 8762
    IP: Source address = xxxx, xxxx
    IP: Destination address = xxxx, xxxx
    IP: No options
    IP:
    TCP: ----- TCP Header -----
    TCP:
    TCP: Source port = 389
    TCP: Destination port = 62638
    TCP: Sequence number = 2004482227
    TCP: Acknowledgement number = 2710103459
    TCP: Data offset = 20 bytes
    TCP: Flags = 0x18
    TCP: 0... .... = No ECN congestion window reduced
    TCP: .0.. .... = No ECN echo
    TCP: ..0. .... = No urgent pointer
    TCP: ...1 .... = Acknowledgement
    TCP: .... 1... = Push
    TCP: .... .0.. = No reset
    TCP: .... ..0. = No Syn
    TCP: .... ...0 = No Fin
    TCP: Window = 49542
    TCP: Checksum = 0xe935
    TCP: Urgent pointer = 0
    TCP: No options

    OK I expect that this explains it...
    Patch Id: 112915-03
    Problem Description:
    4676230 Signal 11 errors(sigsegv) when snooping ldap port(389)

  • How to save data from a waveform chart to a file?

    Hi! I have a question:how to save a real time data from a waveform chart? attachement is a example,how can i do to save the data from 0 second to 25 seconds to a file ?thanks!
    Attachments:
    example.vi ‏23 KB

    You can use a property node to get the chart history as a array. Then you can write that data to the file. The data in the array in you example can also be writen to a file. If you only wnat a portion of the data to be saved, use the Array Subset function to get the part you want.
    Lynn

  • Export all data from my waveform chart to excel

    Hello, my name is Chris. I am just learning to use LabView. Everything I have learned so far is through these boards. Which is a valuable tool for someone learning. The VI I am working on is to monitor current from a unit we are testing. I am able to monitor current and have it running in what I believe to be real time. As I said, this is the first one I have made. I am trying to export all the data from my Waveform Chart to a report. Everytime I try I get one instance and it measures 0. I don't know what I am doing wrong. Any help would be appreciated. Also, if you have any suggestions on the all around working of this I would appreciate that as well. Thank you in advance.
    Attachments:
    Lp Current Test.vi ‏83 KB

    Hey Christophrt,
    If you are trying to display the microseconds for a waveform chart in LabVIEW here is how you can do it:
    Go to the Chart Properties>Display Format>X-Axis>Advanced editing mode>enter:
    %<%I:%M:%S%6u>T  as the format string and you will have the hours: minutes: and seconds to the microseconds. 
    If you are trying to display the exported data in microseconds in Excel, you will probably have to do some formatting changes in Excel to have that work.
    Regards,
    Tommy G.
    Applications Engineer
    National Instruments

  • I have been trying to work on my homework all afternoon, via NAU's blackboard system. I am continuously getting booted out of the system, with an error stating "Data execution prevention". How can I prevent this from continuing?

    I have been trying to work on my homework all afternoon, via NAU's blackboard system. I am continuously getting booted out of the system, with an error stating "Data execution prevention". How can I prevent this from continuing?

    If you are wondering why you are not getting any responses, it is because you have vented a complaint without any details that make any sense or give anyone something to work on.
    If you want help, I suggest actually detailing what has happened, with versions of software etc. Anything that would let us assist.
    As a start I am guessing that you have not really got the hang of "How it all works". Firstly download the Pages09_UserGuide.pdf from under the Help menu. Read that and view the Video Tutorials in the same place. A good addition would be the iWork 09 Missing manual book and something to help you learn how to use your Mac.
    If there are specific tasks you need help with:
    http://www.freeforum101.com/iworktipsntrick/index.php?mforum=iworktipsntrick
    Is a good resource.
    Peter

Maybe you are looking for

  • Not able to get net value in billing document vf01.

    Hello Sir, I am trying to create an invoice for  milestone billing plan. I have maintained copy controls  at item level as follows coplying req.  002 vbrk/vbrp        001 pricingtype     D billing qntty     A while i save contract and trying to creat

  • MS Office 2011 strangeness and Mountain Lion

    I think this is a ML issue, since I hadn't seen it before I upgraded to ML. There are times when I start my iMac (with Excel and Word left open, with open documents) that either Excel or Word will generate a "ghost window". This window is found in th

  • 3220 Gallery problems

    Hi,I bought my daughter this phone 3 months ago.She has taken several photos and videos many of which have suddenly disappeared from the gallery leaving a small folder with a question mark in it. A file size is still displayed but when you try and op

  • Want to Call Tech Support

    Is there a phone number to call to report a problem with Lightroom not understood enough to ask on this forum? I need to talk to someone ASAP.

  • Why won't itunes let me purchase new songs?

    when i try to purchase new songs on itunes it keep sending me an error message to go to www.apple.com/support/itunes/ww/ to see what wrong.