From: robert bristow-johnson on 8 Jul 2010 15:22 On Jul 8, 3:11 pm, Parlous <parlous2...(a)gmail.com> wrote: > Thanks for the suggestions. Would it be possible to figure out the > phase and amplitude without having to use each of the time-domain or > FFT values? I know this is impossible with just one complex bin (both > real and imaginary values at a bin). I tried to see what would happen > if you watched one bin as one went through each amplitude and phase > combination and it is a wave with increasing amplitude - not a 1 to 1 > relationship for amplitude/phase combination. It would be ideal if I > could figure this out with only a subset of the FFT values. It sounds > strange, but I won't have access to any time-domain data - only FFT. > Anymore ideas? Thanks again... i am changing your "x" to "t" (as a better choice of symbol). and your "F" to "f0", which is a known number. and i am assigning 44100 to "Fs". correlating with exp((-j*2*pi*f0/Fs)*t) is the same as convolving with exp((+j*2*pi*f0/Fs)*t) since the convolving by exp((+j*2*pi*f0/Fs)*t) in the time-domain is the same as multiplying by delta(f-f0/Fs) in the frequency domain, then you *can* do this in the frequency domain by simply sampling the *proper* spectrum at f0/Fs. if that lies between FFT bins, you might have to do some interpolation in the frequency domain. but the first thing you need to worry about is the spectral leakage caused by your nasty rectangular window. you need to window this better before you FFT. r b-j
From: Clay on 8 Jul 2010 16:12 On Jul 8, 3:18 pm, Parlous <parlous2...(a)gmail.com> wrote: > I think I should clarify my last post and overall problem. I actually > only have access to a few random bins, I don't even have the complete > FFT. I do have both the real and imaginary components to these random > bins. If the bins are non-zero, I will know the frequency that > generates them. I'd like to reconstruct the rest of the FFT. I'm > considering just extrapolation. However, if I could ascertain the > amplitude and phase of this known frequency, I could generate the rest > of the FFT bins. Its not possible to do so with one bin but what about > others? Would you need the entire FFT? Few random bins? I would at least hope you have the ones nearest your frequency of interest. Can you change your FFT length so as to make your frequency of interest fall on or very close to a bin? Sounds like you have an ill defined problem. Clay
From: Parlous on 8 Jul 2010 19:41 I think I have an answer, at least a preliminary one. Lets iterate through the combinations of amplitude and phase, within numerical abilities. Lets number each combination 1, 2, 3, ... such that 1 might be (0.00001, -pi), 2 be (0.00002, -pi + pi/100000), and etc, proceeding in a linearly increasing fashion. For each combination, we generate a time-domain wave at some known frequency and run the FFT on it (rectangular window). Now suppose we only record the values of one bin. For my previous examples of 82.407, bins 4, 5 or 6 would be fine as they have a lot of "energy". Any one of them will be fine. Now, what would you see? If you looked at just the real or just the imaginary, you would see another wave that grows linearly, as the combinations do. If you had to use just that one wave to determine what combination generated it you couldn't do it. This is because it would fail the horizontal line test (not injective). However, if you look at both domains (real & imag) for each combination, you would see the same kind of wave pattern, just "out of phase" (as you typically see) but there is an added advantage. If you consider both domains' values as a "key" to the combination that generated them, I **think** they're one-to-one. Think about it - if they're both the same frequency (NOT the frequency I choose btw) and increasing by the same amount linear amount, but one is "lagging" behind the other, than they're constantly going to be different values when one considers BOTH their values simultaneously as a "key" (like a key in a database). Does this make sense? I can provide some source code if need be. If this is true, then I should be able to come up with some formulas to describe this, or at least model it, for my application :). Thank you again for your wonderful suggestions...
From: Parlous on 8 Jul 2010 19:46 oops, I incremented the combinations wrong in my example. It should be something like this: Combination (Amp, Phase) 1 (0.01, -pi) 2 (0.01, -pi + phaseIncrement) 3 (0.01, -pi + 2*phaseIncrement) 4 (0.01, -pi + 3*phaseIncrement) ..... N (0.01, -pi + K*phaseIncrement) << here -pi + K*phaseIncrement = pi N + 1 (0.02, -pi) N + 2 (0.02, -pi + phaseIncrement) ..... ad infinitum...
From: Parlous on 9 Jul 2010 00:40 This posses another unusual problem - how does one choose the appropriate increment for the amplitude and phase? One can think of each like a "counter", just like digits in a counting system. Theoretically, considering these particular "counters" are derived from a continuous domain, one has to wonder how can to seemingly infinitely dense segments [0, 1] and [-pi, pi] could be counters? Its like infinity times infinity number of combinations!! Well, the computer is obviously limited but I don't think that I need to even go that far, to push the limits of floating-point numbers. From my MATLAB experiments an amplitude increment of 0.0001 and phase increment of 2*pi/100 are just fine. Its an interesting theoretical question though - would the real and imaginary values considered as one "value" or "key" together be unique for the possible amplitude and phase combinations, if one made an "ordered set" of such combinations? Again, this is all assume ONE generated, known frequency into the FFT.
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 Prev: Gating sound level Next: Yule Walker AR and finding Poles, freq and damping factors |