Showing results for 
Search instead for 
Did you mean: 

PPG signal Processing


Hi everyone , please help me with these issue 

I am basically a newbie to LABVIEW.

Following are the things i had done until now,

1.i had created a vi to read data from my pulseoximeter and also write current gain into the oximeter watch 

2.i had also did certain things like adjusting intensity level without touching the gain.

Now come the problematic part 

1.the overall thing in the vi i did is that am reading intensity levels from probe and then for that intensity level if am not getting output with in some specific range am changing the intensity until i get the condition satisfied

2.if intensity is set then am reading the data continuously 

3.Am getting output with motion artifacts so,first thing i have to do is that check signal is ccorrupted by noise or not if yes corrupted by artifacts then level of couuption hs to be indicated through led indicator whethe signal good bad or moderate .help me to do that 

Download All
0 Kudos
Message 1 of 3

When we see a VI with no user-written sub-VIs, no use of Shift Registers to hold variables "evolving" in a While or For loop, Local Variables or Value Property nodes used inappropriately, we know we are dealing with a LabVIEW beginner.


You will go a very long way to helping yourself by learning to see logical sub-tasks in your code and making them into a sub-VI.  For example, the IR Average Feedback loop seems to hold two largely identical code sections for RED and IR conditions, suggesting a sub-VI that can encapsulate (or "hide") the identical computations, just acting on the appropriate RED or IR inputs and outputs.  Furthermore, instead of having Intensity Conditions, Intensity Average, Intensity, and Tolerance as separate quantities, you could bundle them into a single Cluster, unbundling them on input into your sub-VI and rebundling them when the sub-VI exits, saving this single Wire in a Shift Register of your enclosing While loop.  Similarly, instead of a Feedback node (which I, personally, find confusing), you could put the Boolean in a Shift Register of the While Loop surrounding the Case Statement it controls.


I realize this does not directly address your question, but if you can simplify your code by using sub-VIs for "logical code grouping", you are more likely to see where to put effort to do particular types of data processing (noise analysis) and corrective actions.  Also, sub-VIs take up much less real estates on the Block Diagram (32 by 32 pixels), making the Block Diagram "collapsable" so that it fits on a single Laptop Screen and lets you see the Big Picture, a great boon in figuring out what the code is really doing.


Bob Schor

0 Kudos
Message 2 of 3

Really thanks for your suggestions sir @ Bob

but am really in an urgent situation to look for motion artifact detection only detection not anything else please if anyone has a solution to for that please help me ,today is the final day to show that to my boss.

0 Kudos
Message 3 of 3