I have a user who wants to produce high-intensity acoustic tone bursts for SODAR (acoustic radar). The transducer adds an unwanted transient overshoot and ringing. The same tone burst will be used repeatedly. It occurs to me that the digitally-generated driving signal to the transducer could be pre-compensated to produce an acoustic signal of the desired shape. My first thought is that this could be done by deconvolution of the desired signal with the measured impulse response of the transducer. But somehow this just "feels wrong"... seems to me that the raw, uncompensated burst response should somehow be involved directly. It also seems certain that this must be a common issue that has long been solved... I just haven't found the right magic words to describe it to Google. So, my question to the group is what is this process called? Any hints or tips? Many thanks, Bob Masta DAQARTA v7.60 Data AcQuisition And Real-Time Analysis www.daqarta.com Scope, Spectrum, Spectrogram, Sound Level Meter Frequency Counter, Pitch Track, Pitch-to-MIDI FREE Signal Generator, DaqMusiq generator Science with your sound card!
Pre-compensation of transient response
Started by ●February 22, 2015
Reply by ●February 22, 20152015-02-22
On Sun, 22 Feb 2015 14:20:55 GMT, N0Spam@daqarta.com (Bob Masta) wrote:>So, my question to the group is what is this process called? >Any hints or tips?Sounds a lot like "waveform predistortion", though that is usually used to compensate for nonlinearities in a signal path. Is your overshoot and ringing caused by nonlinearity, or is it simply the response of a linear system? If it's a linear system, and it's stable and minimum phase, then you should be able to precondition the impulse by passing it through a transfer function that moves the undesirable pole and zero locations to more favorable locations: undesirable poles desirable zeroes system (undesirable) zeroes impulse * (----------------- * ------------------) * --------------------------- desirable poles undesirable zeroes system (undesirable) poles desirable zeroes = impulse * ----------------- desirable poles Beware of coefficient truncation effects when trying to cancel poles and zeroes, however. -- Greg
Reply by ●February 22, 20152015-02-22
On Monday, February 23, 2015 at 4:00:28 AM UTC+13, Greg Berchin wrote:> On Sun, 22 Feb 2015 14:20:55 GMT, N0Spam@daqarta.com (Bob Masta) wrote: > > >So, my question to the group is what is this process called? > >Any hints or tips? > > Sounds a lot like "waveform predistortion", though that is usually used to > compensate for nonlinearities in a signal path. Is your overshoot and ringing > caused by nonlinearity, or is it simply the response of a linear system? If it's > a linear system, and it's stable and minimum phase, then you should be able to > precondition the impulse by passing it through a transfer function that moves > the undesirable pole and zero locations to more favorable locations: > > undesirable poles desirable zeroes system (undesirable) zeroes > impulse * (----------------- * ------------------) * --------------------------- > desirable poles undesirable zeroes system (undesirable) poles > > desirable zeroes > = impulse * ----------------- > desirable poles > > Beware of coefficient truncation effects when trying to cancel poles and zeroes, > however. > > -- GregEven if it's non-min phase you can do it at the expense of a time-delay
Reply by ●February 22, 20152015-02-22
On Sun, 22 Feb 2015 08:26:26 -0800 (PST), gyansorova@gmail.com wrote:>> >> undesirable poles desirable zeroes system (undesirable) zeroes >> impulse * (----------------- * ------------------) * --------------------------- >> desirable poles undesirable zeroes system (undesirable) poles >> >> desirable zeroes >> = impulse * ----------------- >> desirable poles >> > >Even if it's non-min phase you can do it at the expense of a time-delayYou may be able to approximate it, but you can't do it exactly. If the system is nonminimum-phase, then the "undesirable zeroes" are in the right half-plane. As a result, desirable zeroes ------------------ undesirable zeroes is unstable. -- Greg
Reply by ●February 22, 20152015-02-22
On Sun, 22 Feb 2015 14:20:55 GMT, N0Spam@daqarta.com (Bob Masta) wrote:>I have a user who wants to produce high-intensity acoustic >tone bursts for SODAR (acoustic radar). The transducer adds >an unwanted transient overshoot and ringing. > >The same tone burst will be used repeatedly. It occurs to me >that the digitally-generated driving signal to the >transducer could be pre-compensated to produce an acoustic >signal of the desired shape. My first thought is that this >could be done by deconvolution of the desired signal with >the measured impulse response of the transducer. > >But somehow this just "feels wrong"... seems to me that the >raw, uncompensated burst response should somehow be involved >directly. > >It also seems certain that this must be a common issue that >has long been solved... I just haven't found the right magic >words to describe it to Google. > >So, my question to the group is what is this process called? >Any hints or tips? > >Many thanks, > > >Bob Masta > > DAQARTA v7.60 > Data AcQuisition And Real-Time Analysis > www.daqarta.com >Scope, Spectrum, Spectrogram, Sound Level Meter > Frequency Counter, Pitch Track, Pitch-to-MIDI > FREE Signal Generator, DaqMusiq generator > Science with your sound card!Can't you just use something like a raised cosine pulse shaping filter and then compensate for that in the matched filter you use for recovery? Mark
Reply by ●February 22, 20152015-02-22
On Monday, February 23, 2015 at 5:34:25 AM UTC+13, Greg Berchin wrote:> On Sun, 22 Feb 2015 08:26:26 -0800 (PST), gyansorova@gmail.com wrote: > > >> > >> undesirable poles desirable zeroes system (undesirable) zeroes > >> impulse * (----------------- * ------------------) * --------------------------- > >> desirable poles undesirable zeroes system (undesirable) poles > >> > >> desirable zeroes > >> = impulse * ----------------- > >> desirable poles > >> > > > >Even if it's non-min phase you can do it at the expense of a time-delay > > You may be able to approximate it, but you can't do it exactly. If the system is > nonminimum-phase, then the "undesirable zeroes" are in the right half-plane. As > a result, > > desirable zeroes > ------------------ > undesirable zeroes > > is unstable. > > -- GregYou can get pretty close with a long enough delay. It's like an FIR filter as an approximation to an IIR.
Reply by ●February 22, 20152015-02-22
On 2/22/15 8:11 PM, gyansorova@gmail.com wrote:> On Monday, February 23, 2015 at 5:34:25 AM UTC+13, Greg Berchin wrote: >> On Sun, 22 Feb 2015 08:26:26 -0800 (PST), gyansorova@gmail.com wrote: >> >>>> >>>> undesirable poles desirable zeroes system (undesirable) zeroes >>>> impulse * (----------------- * ------------------) * --------------------------- >>>> desirable poles undesirable zeroes system (undesirable) poles >>>> >>>> desirable zeroes >>>> = impulse * ----------------- >>>> desirable poles >>>> >>> >>> Even if it's non-min phase you can do it at the expense of a time-delay >> >> You may be able to approximate it, but you can't do it exactly. If the system is >> nonminimum-phase, then the "undesirable zeroes" are in the right half-plane. As >> a result, >> >> desirable zeroes >> ------------------ >> undesirable zeroes >> >> is unstable. >> > > You can get pretty close with a long enough delay. It's like an FIR filter as an approximation to an IIR.well, sure. you can get "pretty close" to any unstable filter with a stable FIR using a window that windows off the tail of the IIR that is blowing up. sure, why not? it's *pretty* close. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by ●February 23, 20152015-02-23
On Monday, February 23, 2015 at 3:10:01 PM UTC+13, robert bristow-johnson wrote:> On 2/22/15 8:11 PM, gyansorova@gmail.com wrote: > > On Monday, February 23, 2015 at 5:34:25 AM UTC+13, Greg Berchin wrote: > >> On Sun, 22 Feb 2015 08:26:26 -0800 (PST), gyansorova@gmail.com wrote: > >> > >>>> > >>>> undesirable poles desirable zeroes system (undesirable) zeroes > >>>> impulse * (----------------- * ------------------) * --------------------------- > >>>> desirable poles undesirable zeroes system (undesirable) poles > >>>> > >>>> desirable zeroes > >>>> = impulse * ----------------- > >>>> desirable poles > >>>> > >>> > >>> Even if it's non-min phase you can do it at the expense of a time-delay > >> > >> You may be able to approximate it, but you can't do it exactly. If the system is > >> nonminimum-phase, then the "undesirable zeroes" are in the right half-plane. As > >> a result, > >> > >> desirable zeroes > >> ------------------ > >> undesirable zeroes > >> > >> is unstable. > >> > > > > You can get pretty close with a long enough delay. It's like an FIR filter as an approximation to an IIR. > > well, sure. you can get "pretty close" to any unstable filter with a > stable FIR using a window that windows off the tail of the IIR that is > blowing up. sure, why not? it's *pretty* close. > > -- > > r b-j rbj@audioimagination.com > > "Imagination is more important than knowledge."No, you missunderstand. That's not what I mean. You can factor into min and non min phase terms and do an expansion of the NMP part BACKWARDS in time so it is convergent. So the approximation is very good indeed. I'm not going to explain the whole procedure here.
Reply by ●February 23, 20152015-02-23
On 2/23/15 3:07 AM, gyansorova@gmail.com wrote:> On Monday, February 23, 2015 at 3:10:01 PM UTC+13, robert bristow-johnson wrote: >> On 2/22/15 8:11 PM, gyansorova@gmail.com wrote: >>> On Monday, February 23, 2015 at 5:34:25 AM UTC+13, Greg Berchin wrote: >>>> On Sun, 22 Feb 2015 08:26:26 -0800 (PST), gyansorova@gmail.com wrote: >>>> >>>>>> >>>>>> undesirable poles desirable zeroes system (undesirable) zeroes >>>>>> impulse * (----------------- * ------------------) * --------------------------- >>>>>> desirable poles undesirable zeroes system (undesirable) poles >>>>>> >>>>>> desirable zeroes >>>>>> = impulse * ----------------- >>>>>> desirable poles >>>>>> >>>>> >>>>> Even if it's non-min phase you can do it at the expense of a time-delay >>>> >>>> You may be able to approximate it, but you can't do it exactly. If the system is >>>> nonminimum-phase, then the "undesirable zeroes" are in the right half-plane. As >>>> a result, >>>> >>>> desirable zeroes >>>> ------------------ >>>> undesirable zeroes >>>> >>>> is unstable. >>>> >>> >>> You can get pretty close with a long enough delay. It's like an FIR filter as an approximation to an IIR. >> >> well, sure. you can get "pretty close" to any unstable filter with a >> stable FIR using a window that windows off the tail of the IIR that is >> blowing up. sure, why not? it's *pretty* close. >> > > No, you missunderstand. That's not what I mean. You can factor into min and non min phase terms and do an expansion of the NMP part BACKWARDS in time so it is convergent. So the approximation is very good indeed. I'm not going to explain the whole procedure here.like Truncated IIR filtering to get linear phase, i know about filtfilt() and running data through filters backward. but it's still not the reciprocal of zeros (which are poles) outside the unit circle. it's an FIR (or a close approximation, because it's not a TIIR). -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by ●February 23, 20152015-02-23
On Sun, 22 Feb 2015 09:00:16 -0600, Greg Berchin <gjberchin@chatter.net.invalid> wrote:>On Sun, 22 Feb 2015 14:20:55 GMT, N0Spam@daqarta.com (Bob Masta) wrote: > >>So, my question to the group is what is this process called? >>Any hints or tips? > >Sounds a lot like "waveform predistortion", though that is usually used to >compensate for nonlinearities in a signal path. Is your overshoot and ringing >caused by nonlinearity, or is it simply the response of a linear system? If it's >a linear system, and it's stable and minimum phase, then you should be able to >precondition the impulse by passing it through a transfer function that moves >the undesirable pole and zero locations to more favorable locations: > > undesirable poles desirable zeroes system (undesirable) zeroes >impulse * (----------------- * ------------------) * --------------------------- > desirable poles undesirable zeroes system (undesirable) poles > > desirable zeroes >= impulse * ----------------- > desirable poles > >Beware of coefficient truncation effects when trying to cancel poles and zeroes, >however. > >-- GregThanks. I assume linearity... it's a high-power loudspeaker, so there will certainly be some nonlinearity, but that's not the issue so much as the ringing, etc. Anyway, please forgive my ignorance: How does one actually go about using your proposed method? I can certainly measure the impulse response, but I'm not sure how to find the transfer function in terms of poles and zeroes... doesn't seem like it will be straightforward. Is there something flawed with my deconvolution idea? Best regards, Bob Masta DAQARTA v7.60 Data AcQuisition And Real-Time Analysis www.daqarta.com Scope, Spectrum, Spectrogram, Sound Level Meter Frequency Counter, Pitch Track, Pitch-to-MIDI FREE Signal Generator, DaqMusiq generator Science with your sound card!