Technical discussions related to Audio Signal Processing (digital effects, acoustics, noise reduction, musical signal processing, etc).
This question is not a real problem. It is just something which makes my head so confused and I really need a relief :) I tried to get a frequency response of an unknown system using its input-output-data. Input-data is PRBS-signal. It worked really good. My PRBS was length of 2000 and I used 1 period. I obtained the frequency response with FFT(output,one period)/FFT(input,one period). What makes me confused is that why the response is like crap if I use (for instance) only 0.8 period for input and 0.8 period for output (and divide the FFTs). If I cut 1500 bits from 2000 bits PRBS and use FFT(output,one period)/FFT(intput,one period)I'll get a good result. Why the result is now good but not if use 2000 bits and cut 1500/2000 from input and 1500/2000 from output and use FFT(out)/FFT(in)?
Did you consider the frequency spectrum of the unknown system. When you are considering only some portion of the time-domain signal for interrogation, it is obvious that the frequency bands over which the scan is performed is varying. And based on the length of the FFT, the frequency spacing in the frequency domain also changes. So, when a system identification is performed, the frequency spectrum over which the system responds well and appropriate length for FFT should be considered. regards, Venkata S Telasula j...@jippii.fi wrote: This question is not a real problem. It is just something which makes my head so confused and I really need a relief :) I tried to get a frequency response of an unknown system using its input-output-data. Input-data is PRBS-signal. It worked really good. My PRBS was length of 2000 and I used 1 period. I obtained the frequency response with FFT(output,one period)/FFT(input,one period). What makes me confused is that why the response is like crap if I use (for instance) only 0.8 period for input and 0.8 period for output (and divide the FFTs). If I cut 1500 bits from 2000 bits PRBS and use FFT(output,one period)/FFT(intput,one period)I'll get a good result. Why the result is now good but not if use 2000 bits and cut 1500/2000 from input and 1500/2000 from output and use FFT(out)/FFT(in)?
Joonas- > This question is not a real problem. It is just something which makes my head > so confused and I really need a relief :) > > I tried to get a frequency response of an unknown system using its > input-output-data. Input-data is PRBS-signal. It worked really good. My PRBS > was length of 2000 and I used 1 period. I obtained the frequency response > with FFT(output,one period)/FFT(input,one period). What makes me confused > is that why the response is like crap if I use (for instance) only 0.8 > period for input and 0.8 period for output (and divide the FFTs). > > If I cut 1500 bits from 2000 bits PRBS and use > FFT(output,one period)/FFT(intput,one period)I'll get a good result. Why > the result is now good but not if use 2000 bits and cut 1500/2000 from input > and 1500/2000 from output and use FFT(out)/FFT(in)? I'm guessing, but if PRBS signals are like MLS signals, then they have specific. defined "lengths", in which the bit sequence is unique and does not repeat. For example MLS sequences are typically a power of 2 minus one, e.g. 16383, 65535, etc. The further the MLS length is away from one of these naturally defined values, the more inaccurate are the cross-correlation results. The worst-case is a length halfway between 2 values. -Jeff
I guess you take the first 1500 bits of the 2000 bits? Try to take the last 1500 bits and try again. --- j...@jippii.fiдµÀ: > This question is not a real problem. It is just > something which makes my head so confused and I > really need a relief :) > > I tried to get a frequency response of an unknown > system using its input-output-data. Input-data is > PRBS-signal. It worked really good. My PRBS was > length of 2000 and I used 1 period. I obtained the > frequency response with FFT(output,one > period)/FFT(input,one period). What makes me > confused is that why the response is like crap if I > use (for instance) only 0.8 period for input and 0.8 > period for output (and divide the FFTs). > > If I cut 1500 bits from 2000 bits PRBS and use > FFT(output,one period)/FFT(intput,one period)I'll > get a good result. Why the result is now good but > not if use 2000 bits and cut 1500/2000 from input > and 1500/2000 from output and use FFT(out)/FFT(in)? >
This is the basis of my guess. Denote the system as H where H is an 2000x1 vector with its n-th element equal to the n-th sample of the impulse response of the system. Denote the output sequence as Y, a 2000x1 vector with its n-th element being the (1999-n) sample of the output signal. Let X be the 2000x2000 convolution matrix. We can write Y = XH. By applying 2000 point DFT to left and right, let F be the 2000x2000 DFT matrix FY = FXF^-1FH. As FXF^-1 is diagonal dominant (X is teopoliz), H can be approximately be calculated as H approx D^-1FY where D approx FXF^-1. Now let's remove the last 500 samples of the input and the output. We have Y1 = X1H where Y1 is a 1500x1 vector consisting of the last 1500 elements of the vector Y (or equivalently, the first 1500 samples of output signal) and X1 is a 1500x2000 matrix consisting of the last 1500 rows of X. Partition X1 and H as X1 = [X11 X12] where X11 is 500x500 consisting of the first 500 columns of X1 H = [H11; H12] where H11 is 500x1 consisting of the first 500 elements of H. Y1 = X11H11 + X12H12. If your system has significant responses in both parts of H11 and H12, or say if your system has a heavy tail (exceeding 500 samples), apply DFT on the above equation obviously does not give you any good result. On the other hand, if the last 500 bits of the input and the output sequences are removed, we will have Y2 = X21H21 + X22H22 where X22 is 500x500 consisting of the last 500 columns of X1. As a stable system generally have a decaying tail approching zero, we can reasonbly hope that H22 approx 0 and ignore the second term on the right. --- Huo Jiaquan <j...@yahoo.com>дµÀ: > I guess you take the first 1500 bits of the 2000 > bits? > Try to take the last 1500 bits and try again. > --- j...@jippii.fiдµÀ: > > > This question is not a real problem. It is just > > something which makes my head so confused and I > > really need a relief :) > > > > I tried to get a frequency response of an unknown > > system using its input-output-data. Input-data is > > PRBS-signal. It worked really good. My PRBS was > > length of 2000 and I used 1 period. I obtained the > > frequency response with FFT(output,one > > period)/FFT(input,one period). What makes me > > confused is that why the response is like crap if > I > > use (for instance) only 0.8 period for input and > 0.8 > > period for output (and divide the FFTs). > > > > If I cut 1500 bits from 2000 bits PRBS and use > > FFT(output,one period)/FFT(intput,one period)I'll > > get a good result. Why the result is now good but > > not if use 2000 bits and cut 1500/2000 from input > > and 1500/2000 from output and use > FFT(out)/FFT(in)? >