LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Better "multiple tone information" vi?

Hello you all,

 

I am currently working on extracting sin waves out of a signal that is build out of sin waves. I am using the "multiple tone information" vi (I arguebly could use single tone information for my purpose) to detect a sin wave. I then extract each detected signal from my original signal inside a for-loop over and over. However the "multiple tone information" isn't quite as accurate as I would like it to be. Would appreciate some tips about a way to improve quality.

 

Greeting from Germany

0 Kudos
Message 1 of 10
(2,693 Views)

@mikoborn wrote:

Hello you all,

 

I am currently working on extracting sin waves out of a signal that is build out of sin waves. I am using the "multiple tone information" vi (I arguebly could use single tone information for my purpose) to detect a sin wave. I then extract each detected signal from my original signal inside a for-loop over and over. However the "multiple tone information" isn't quite as accurate as I would like it to be. Would appreciate some tips about a way to improve quality.

 

Greeting from Germany


You are currently misusing many basic LabVIEW concepts.  Regardless, you also did not really understand how to get the information you wished from the Extract Multiple Tone Information VI.

 

Here is a modification that uses index array and unbundle by name correctly as well as using Extract Multiple Tone Information VI to provide residual outputs and scale the tone threshold logarithmically.

Snippet in 2022

attached saved back to 2020

JT mod.png

You will find some strange looking residuals that would be reduced if the signals were generated with extended precision floating point values but, Double Precision is good for 15 significant digits. 


"Should be" isn't "Is" -Jay
0 Kudos
Message 2 of 10
(2,648 Views)

I really recommend do continue with a few LabVIEW tutorials.

(Why do your controls had poor default values? (e.g. a zero for "amount of signals is not reasonable", adding two signals that have the same inputs seems silly). Why are front panel and diagram maximized to the screen? Why do you repeatedly detect the same frequencies in a loop?

 

Here's what I would probably do (rough draft!):

 

altenbach_0-1670951796195.png

 

Probably needs a few tweaks.

 

0 Kudos
Message 3 of 10
(2,625 Views)

Since the sampling information is the same for all signals, I would just operate on the y-components instead

 

altenbach_0-1670952595427.png

 

Message 4 of 10
(2,619 Views)

@altenbach wrote:

Since the sampling information is the same for all signals, I would just operate on the y-components instead

 

altenbach_0-1670952595427.png

 


I wanted to show the residual tone by tone without recalculating it outside the extract tone measurement vi.  Silly to do it twice.


"Should be" isn't "Is" -Jay
0 Kudos
Message 5 of 10
(2,611 Views)

I am not familiar enough with the multitone extraction tool to be sure that successive single extractions are the same as one muti-extraction. (Next time I am on a computer with LabVIEW, I'll have a look inside 😄 )

0 Kudos
Message 6 of 10
(2,603 Views)

@altenbach wrote:

I am not familiar enough with the multitone extraction tool to be sure that successive single extractions are the same as one muti-extraction. (Next time I am on a computer with LabVIEW, I'll have a look inside 😄 )


I imagine they are not exact. (I looked inside) but, only due to the expected floating point errors.  Similar to adding 0.1 to 0.1 100 times rather than multiplying by 100.  Regardless, its the only way to slide the threshold for each residual.


"Should be" isn't "Is" -Jay
0 Kudos
Message 7 of 10
(2,564 Views)

Hello you all,

 

I have an array filled with sensor data. The sensor data is periodic and now I am trying to build a vi that finds the period length. The approach I took was to copy the array and rotate the array with each loop iteration. Within each iteration I then substracted the arrays off each other, calculated the abs values and summed all the array elemets up. When the array that is shifted, is shifted by exactly one period length the sum of the abs values of the differences of the two arrays will be a minimum. That was my basic idea, however because of noise inside the data I implemented some filters, means and cooldowns which seem to be neccessary but make the programm sensitive.

 

I would appreciate if some of you guys would have an idea on how to reliable make out the local minima. Or any other way to find the period length of Sensor data

0 Kudos
Message 8 of 10
(2,499 Views)

Why not simply use "Extract Single Tone Information.vi" from the Signal Processing>>Waveform Measurements pallet and take the reciprocal of the detected frequency output?  All the happy filtering and signal magic is already done inside that vi by developers who actually understand signal processing theory.

 

You can even use the detailed description Information to start Googling the math concepts you haven't used before. 

 

That is a nice way to say "You are doing it wrong."


"Should be" isn't "Is" -Jay
0 Kudos
Message 9 of 10
(2,467 Views)

Extract Multiple Tone Information is not the same as Extract Single Tone Information multiple times. The *Multiple Tone* VI does a best fit for all the tones exceeding the **threshold** simultaneously (each tone is corrected for the leakage of other identified tones).

 

Doug
Enthusiast for LabVIEW, DAQmx, and Sound and Vibration
Message 10 of 10
(2,453 Views)