DSPRelated.com
Forums

Pre-compensation of transient response

Started by Bob Masta February 22, 2015
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!
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
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. > > -- Greg
Even if it's non-min phase you can do it at the expense of a time-delay
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. -- Greg
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
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. > > -- Greg
You can get pretty close with a long enough delay. It's like an FIR filter as an approximation to an IIR.
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."
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.
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."
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. > >-- Greg
Thanks. 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!