0
$\begingroup$

I am performing dual FFT analysis on a system.

1) I generate a Log Sine Sweep signal and save it as my reference array

2) I then produce an inverse filter to correct for amplitude and save this as inverse array

3) I play this signal through my device under test, and record the result from a measurement microphone and save this as my measurement array.

4) I perform an FFT on all three arrays.

5) I multiply both the measurementFFT and the referenceFFT with the inverseFFT.

6) I then divide the corrected measurementFFT by the corrected referenceFFT

7) finally I perform an inverse FFT on this division product to get back to the time domain and this gives me my impulse response.

If I plot this I have a clear impulse response. If I try and extract the phase from this I have issues.

To do this I find the reference delay time by finding the max absolute value of the impulse. This will be the number of samples I need to delay the reference signal by if I am to extract minimal phase.

So, I go back to square one:

1) I zero pad the array

2) I then move the reference array so it is delayed by the impulse sample number. With zeros each side to equal the length of the measurement array

3) I then FFT both of these, repeating steps 4-6 from before

4) I then extract the phase from the impulse in the frequency domain, by using i = atan2(im(i), re(i)) for each value of the division product.

5) I then convert to degrees by multiplying each value by 180 and then dividing by pi.

If I plot this I end up with a lot of wraps in phase. Playing around a bit, I have discovered if I subtract my impulse delay time from the total count and use that as my new delay time, it gives the expected result. Have I missed something here. (ie if I have 32768 samples, and my impulse is at sample 12, I would delay my reference by 32756 samples using the above method).

Have I missed anything obvious?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.