DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

peak elimination

Hi,

Im analysing data from a number of milling tests in
terms of resonance peaks, and need to remove the FFT
peaks corresponding to the tooth passing frequency,
i.e. in the example attatched the cutting tooth engaged
with the workpiece with a frequency of 91,67Hz,
therefore at all multiples of this frequency I have
peaks which I need to eliminate. For this I need to
generate a VBS. I have a number of ideas of how to do this but was hoping for an outside, impartial idea of how it could be achieved.

Thanks in advance!

Helen
0 Kudos
Message 1 of 6
(3,789 Views)
Hello Helen,

That is an interesting task. I downloaded your data and had a look at it. Seems like ch 4 is the raw signal and ch 2 the scaled signal.
In general, there are two ways of realizing that. The first would be to apply some filtering algorithms prior to calculatimg th FFT, the other would be to calculate the FFT and then eliminate the peaks.
The disadvantage with the first method would be that the filtering algorithms are not ideal - and always have an impact on the neighbour data as well. It seems that you have some peaks that lie close together - so the amplitude of the second will be attenuated as well.
The problem with the second is that the peaks consist of a veying number of points. And again, that there are some peaks close to others - if you want to remove one you have to take into account that they are overlapping in their base. To preserve the area under the second peak you would have to interpolate some points. Calculating them from the slope of the peak edges.

That does not look to easy, but its interesting, though. Please give me some more information - maybe I'll get a good idea how to solve that with vbs.
How would you do this manually, on a piece of paper? What are the requirements concerning the accuracy of the resulting spectrum? How much orders of the peakt do you really have to take into account?

regards,
Ingo
Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 2 of 6
(3,774 Views)

Hi Ingo,

 

basically what I need to do is to compare the amplitude peaks (without those at multiples of 91,67Hz) in channel 6 with those from channels 12, 15 and 18 respectively.

I had been thinking of putting together a script to do the following:

1. Identify the highest amplitude of a peak in ch6.

2. Generate (somehow!) peaks of this amplitude at multiples of 91,67Hz

3. Subtract this signal from ch 6, and then set the values < 0 to zero.

4. Compare this edited signal with chs. 12, 15, 18 

The most important areas of the signal are therefore those frequency ranges in which peaks in chs 12, 15 and 18 - as shown in the attatched picture.

regards,

helen 

0 Kudos
Message 3 of 6
(3,768 Views)
Hi Helen,

I am not sure if I gotr you right.. The way you wanted to go is some kind of offset removal? Generate a spectrum consisting only of peaks at different orders of the 91,67 to substract it from the original signal?
Sure, this would work but I dont have a clue how to calculate such kind of offset spectrum. Clever idea though, just to take the strongest peak and to substract this from all the other orders as well. But you should not forget that you might have "good" peaks that overlap with the "bad" peaks. In overlapping regions the area under the curfe is the sum of the energy of both peaks. You will get incorrect results (too small) for the good peaks i such regions - or might even lose them at all.

Let me think a bit more about that.

Furthermore I noticed looking at your capture and the data that the amplitudes of the firdt spectrum is ages higher than the other channels. Is this due to the superimposed, bad peaks or do you have to scale the channel when you compare it to the others?

regards

Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 4 of 6
(3,753 Views)
Hi Helen,

I am not sure if I gotr you right.. The way you wanted to go is some kind of offset removal? Generate a spectrum consisting only of peaks at different orders of the 91,67 to substract it from the original signal?
Sure, this would work but I dont have a clue how to calculate such kind of offset spectrum. Clever idea though, just to take the strongest peak and to substract this from all the other orders as well. But you should not forget that you might have "good" peaks that overlap with the "bad" peaks. In overlapping regions the area under the curfe is the sum of the energy of both peaks. You will get incorrect results (too small) for the good peaks i such regions - or might even lose them at all.

Let me think a bit more about that.

Furthermore I noticed looking at your capture and the data that the amplitudes of the firdt spectrum is ages higher than the other channels. Is this due to the superimposed, bad peaks or do you have to scale the channel when you compare it to the others?

regards

Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 5 of 6
(3,755 Views)
Sorry for the double post. I seem to have had a nervous index finger Smiley Happy

In the end, maybe your idea is actually working. You have to verify this yourself, cause I cannot tell from the data.
I wrote a VBS that first finds all orders of 91.67 in the frequency range. It generates a channel that is 1 for the peaks and 0 in between. You can visualize that channel in VIEW to localize the peaks.
This channel is substracted from the original channel, and all values <0 are set to 0.
The result could have been obtained easier - just by writing a 0 in the original channel in the place of every order - but I thought you might want to play around a bit with scaling the peaks channel if the result is not as expected.

The script is written for DIAdem 10 - if you are using an elder version - use the commented alternative rows for the channel allocation.
Hope this is helping you a step further.

regards,
Ingo

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="Generator" content="Kate, the KDE Advanced Text Editor"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="Generator" content="Kate, the KDE Advanced Text Editor">
order = 1
f = 91.67
cfreq = 5
cspec = 6

cpeak=cno(ChnListToChnStr(chnalloc("peaks", cl(cfreq))))
' cpeak=cno("free") : chnalloc "peaks", cl(cfreq)

do 
nextord = Pno(cn(cfreq),order*f)
  
    chd(nextord,cpeak)=1
    order=order+1
 
loop until order*f > cmax(cfreq)

cnspec=cno(ChnListToChnStr(chnalloc("new spec", cl(cspec))))
' cnspec=cno("free") : chnalloc "new spec", cl(cspec)

formulacalc "ch("&cnspec&"):=(ch("&cspec&")-ch("&cpeak&"))"
formulacalc "ch("&cnspec&"):=((ch("&cnspec&")>0)*ch("&cnspec&"))"
    

Message Edited by IngoS on 02-22-2006 07:19 PM

Ingo Schumacher
Systems Engineering Manager CEERNational Instruments Germany
0 Kudos
Message 6 of 6
(3,749 Views)