LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How can I take an asymmetric wave and measure peak distribution?

Solved!
Go to solution

Using a profilometer the surface topology of a deposited material can be measured. I want to design a program to read in the raw data files of these profiles and then perform some analysis which will extract the distribution in peak/trough heights and in the distances between peaks. Reading in data, manipulating arrays and producing output files/plots I'm fine with but the problem I'm having is as to what analytical tools can be used on such asymmetric waveforms. I was thinking some form of signal processing technique but I'm not sure. I've attached an example profile for one of my samples to give an idea of what I'm working with...

0 Kudos
Message 1 of 4
(2,561 Views)

@apg504 wrote:

Using a profilometer the surface topology of a deposited material can be measured.



Although your application is based on Tribology, but as the fundamentals remain same.. I'll suggest you to:

1. Check/install NI Biomedical Startup Kit 3.0, if anything is of your use in this.

2. Post your query to 'Biomedical User Group', as they might also be interested in this problem statement.


I am not allergic to Kudos, in fact I love Kudos.

 Make your LabVIEW experience more CONVENIENT.


0 Kudos
Message 2 of 4
(2,553 Views)
Solution
Accepted by topic author apg504

If this is fairly representative of your data, I'd first take a stab at it using the LabVIEW Peak Detector VI (Signal Processing -> Signal Operation). There's not much noise at all compared to the size of your peaks (if we're just talking about the visible ones here), so you might just smooth your data with a Savitsky-Golay function (or such) to take out the little random noise jiggles, offset all your points to make them positive, set a reasonable threshold value and peak width and go to it.

 

Now, if you have one huge trough like in the file you sent, you might miss a lot of peaks (again, I don't know what your criteria for a "peak" are). If that happens, I'd suggest looking at the data upside down to find your valleys as inverted "peaks". At this point, you could go back to right-side up, connect the valleys with lines and subtract these points from your data for a pseudo-baseline and run the Peak Detector VI again (you can probably go much more sensitive with your threshold setting because you have taken out most of the very long-term drift). You should have now identified all of your peak and valley points on the X axis. Return to the original data to determine peak heights with whatever baseline algorithm you want to use (linear between valleys, Bezier curves, etc.).

 

That's how I'd attack it generically. But this is a very common situation in probably all sciences and engineering fields. Isn't there some standard geological data-crunching method with generally agreed-upon criteria for your problem?

 

Cameron

 

To err is human, but to really foul it up requires a computer.
The optimist believes we are in the best of all possible worlds - the pessimist fears this is true.
Profanity is the one language all programmers know best.
An expert is someone who has made all the possible mistakes.

To learn something about LabVIEW at no extra cost, work the online LabVIEW tutorial(s):

LabVIEW Unit 1 - Getting Started</ a>
Learn to Use LabVIEW with MyDAQ</ a>
Message 3 of 4
(2,533 Views)

 

@camerond wrote:

If this is fairly representative of your data, I'd first take a stab at it using the LabVIEW Peak Detector VI (Signal Processing -> Signal Operation). There's not much noise at all compared to the size of your peaks (if we're just talking about the visible ones here), so you might just smooth your data with a Savitsky-Golay function (or such) to take out the little random noise jiggles, offset all your points to make them positive, set a reasonable threshold value and peak width and go to it.

 

Now, if you have one huge trough like in the file you sent, you might miss a lot of peaks (again, I don't know what your criteria for a "peak" are). If that happens, I'd suggest looking at the data upside down to find your valleys as inverted "peaks". At this point, you could go back to right-side up, connect the valleys with lines and subtract these points from your data for a pseudo-baseline and run the Peak Detector VI again (you can probably go much more sensitive with your threshold setting because you have taken out most of the very long-term drift). You should have now identified all of your peak and valley points on the X axis. Return to the original data to determine peak heights with whatever baseline algorithm you want to use (linear between valleys, Bezier curves, etc.).

 

That's how I'd attack it generically. But this is a very common situation in probably all sciences and engineering fields. Isn't there some standard geological data-crunching method with generally agreed-upon criteria for your problem?

 

Cameron

 


Thanks for this help; I've used a smoothing filter followed by two peak detectors (one for valleys and one for peaks) and then return the results with good matches to all peaks/valleys, irrelavent of their size. There is still a few "false" peaks that get found, due to residual noise after smoothing, which I'm having to remove manually from the results but even so this has improved my efficiency. Quite simple but I'm new to signal processing!

 

I attach my VI for anyone who's interested...

0 Kudos
Message 4 of 4
(2,513 Views)