mike28282828
11-24-2006, 07:01 AM
Hi there.
I've built an application that creates a pure sine wave, then I've used memcof and evlmem to analyze it.
Everything seems to work fine and the frequency is actually detected. However, at certain frequencies, there seems to be no frequency pole.
I have checked and found this has correlation to the number of input points used to create the pure source sinewave, and also the number of poles used to analyze it.
However, to bypass these problems, I have found that adding even the slightest amount of random noise to the sinewave will somehow "fix" all the strange effects.
Then I proceeded to combining several pure sine waves creating a synthesis. I've ran the new waveform through the memcof and evlmem, and did get the maximums at the right frequencies. However, the POWER of each maximum has no correlation to the amplitude of the original sine wave.
For example, if I use 2 sine waves, both with an amplitude of 5, one at a frequency 7 and one at frequency 18, I do get the power spectrum poles at 7 and 18, but their power is strongly not equal. Moreover, the decision on which frequency is stronger seems to be dependant on all the parameters (i.e., the frequencies used, the number of poles used, the number of points that the waveform is built from, etc...)
My question is, does somebody knows why:
1. memcof and evlmem sometimes gives strange frequency readings, that can be solved with "random noise"?
2. they do not return true amplitude of input sines?
note: When I add the usage of fixrts function after memcof, in SOME cases mentioned at #1 above (where the power spectrum response is flat), fixrts will return an error due to the intrinsic usage of laguer ("too many iterations")
If anybody is interested, i can list the code. I also packed it as a standard .dll to be used with other software/languages.
anybody?
Thanks in advance.
Mike
I've built an application that creates a pure sine wave, then I've used memcof and evlmem to analyze it.
Everything seems to work fine and the frequency is actually detected. However, at certain frequencies, there seems to be no frequency pole.
I have checked and found this has correlation to the number of input points used to create the pure source sinewave, and also the number of poles used to analyze it.
However, to bypass these problems, I have found that adding even the slightest amount of random noise to the sinewave will somehow "fix" all the strange effects.
Then I proceeded to combining several pure sine waves creating a synthesis. I've ran the new waveform through the memcof and evlmem, and did get the maximums at the right frequencies. However, the POWER of each maximum has no correlation to the amplitude of the original sine wave.
For example, if I use 2 sine waves, both with an amplitude of 5, one at a frequency 7 and one at frequency 18, I do get the power spectrum poles at 7 and 18, but their power is strongly not equal. Moreover, the decision on which frequency is stronger seems to be dependant on all the parameters (i.e., the frequencies used, the number of poles used, the number of points that the waveform is built from, etc...)
My question is, does somebody knows why:
1. memcof and evlmem sometimes gives strange frequency readings, that can be solved with "random noise"?
2. they do not return true amplitude of input sines?
note: When I add the usage of fixrts function after memcof, in SOME cases mentioned at #1 above (where the power spectrum response is flat), fixrts will return an error due to the intrinsic usage of laguer ("too many iterations")
If anybody is interested, i can list the code. I also packed it as a standard .dll to be used with other software/languages.
anybody?
Thanks in advance.
Mike