From: ac123 on
I am looking for information on non-linear filters that generate outputs
similar to this:

y[n] = x[n]/x[n-1]

or

y[n] = x[n]*x[n-1]

Do these types of filters have specific names so I can know what to google
for? How can I find their frequency response?


From: cincydsp on
On Jul 11, 11:52 am, "ac123" <d...(a)myallit.com> wrote:
> I am looking for information on non-linear filters that generate outputs
> similar to this:
>
> y[n] = x[n]/x[n-1]
>
> or
>
> y[n] = x[n]*x[n-1]
>
> Do these types of filters have specific names so I can know what to google
> for? How can I find their frequency response?

You'll find that there's little information out there on analysis of
nonlinear filters, mostly because there's no simple framework to
analyze them with. Frequency response is somewhat meaningless for
nonlinear filters. Impulse response is used to characterize linear
time-invariant systems because you can express any input signal as a
sum of scaled and shifted impulses (I'm talking discrete-time filters
and Kronecker deltas here to avoid the mathematical precision required
when talking about continuous-time systems or Dirac deltas), allowing
you to express the system output via a convolution sum. Frequency
response is used because sinusoids are eigenfunctions of linear
systems; for each tone that you put in, you get one out that is a
scaled and shifted version of the original. This allows you to express
the output of the system in the frequency domain via multiplication of
the input's spectrum by the system frequency response.

These basic tools, which most common "DSP" tasks are based upon, just
don't work in general for nonlinear filters. Sinusoids are not
eigenfunctions of a nonlinear system in general. Impulse response also
doesn't necessarily give you anything useful in the nonlinear case.
So, you'll find that nonlinear techniques are much more rarely used
than their linear counterparts. There is a wealth of information and
techniques that have been developed for bending linear systems to your
will. For a very specific application, you might be able to devise a
nonlinear technique that yields improved performance, but there's no
systematic method for developing such a filter.

More specifically to your question about the two input-output
relations you gave, I'm not aware of any uses or names for them. A
"sliding product" or "sliding ratio", maybe?

Jason
From: Tim Wescott on
ac123 wrote:
> I am looking for information on non-linear filters that generate outputs
> similar to this:
>
> y[n] = x[n]/x[n-1]
>
> or
>
> y[n] = x[n]*x[n-1]
>
> Do these types of filters have specific names so I can know what to google
> for? How can I find their frequency response?
>
>
"Frequency response" is, in general, meaningless in the context of a
nonlinear system. If you can linearize the system model into a
reasonable approximation of the real thing then "frequency response"
means something, but only to the degree that your approximation is valid.

The systems above _are_ homologous to linear systems if you take the
logarithm of both sides. Define ly = log(y) and lx = log(x). Then your
systems become

ly(n) = lx(n) - lx(n-1)

and

ly(n) = lx(n) + lx(n-1)

You should be able to use the above relationships to predict the
behavior of the logarithms of your variables using linear system
analysis (including frequency response) and thus the behavior of the
variables themselves. (And no, I'm not forgetting to restrict the
analysis to positive variables -- if you use the complex log it should
work with the equations as written).

You could extend this to multiplication by arbitrary exponents of the
variables. (Although with non-integer exponents you _would_ have to
restrict the variables to positive values, unless you didn't mind having
complex values flying around your system).

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" gives you just what it says.
See details at http://www.wescottdesign.com/actfes/actfes.html
From: Robert Adams on
On Jul 11, 1:46 pm, Tim Wescott <t...(a)seemywebsite.com> wrote:
> ac123 wrote:
> > I am looking for information on non-linear filters that generate outputs
> > similar to this:
>
> > y[n] = x[n]/x[n-1]
>
> > or
>
> > y[n] = x[n]*x[n-1]
>
> > Do these types of filters have specific names so I can know what to google
> > for? How can I find their frequency response?
>
> "Frequency response" is, in general, meaningless in the context of a
> nonlinear system.  If you can linearize the system model into a
> reasonable approximation of the real thing then "frequency response"
> means something, but only to the degree that your approximation is valid.
>
> The systems above _are_ homologous to linear systems if you take the
> logarithm of both sides.  Define ly = log(y) and lx = log(x).  Then your
> systems become
>
> ly(n) = lx(n) - lx(n-1)
>
> and
>
> ly(n) = lx(n) + lx(n-1)
>
> You should be able to use the above relationships to predict the
> behavior of the logarithms of your variables using linear system
> analysis (including frequency response) and thus the behavior of the
> variables themselves.  (And no, I'm not forgetting to restrict the
> analysis to positive variables -- if you use the complex log it should
> work with the equations as written).
>
> You could extend this to multiplication by arbitrary exponents of the
> variables.  (Although with non-integer exponents you _would_ have to
> restrict the variables to positive values, unless you didn't mind having
> complex values flying around your system).
>
> --
>
> Tim Wescott
> Wescott Design Serviceshttp://www.wescottdesign.com
>
> Do you need to implement control loops in software?
> "Applied Control Theory for Embedded Systems" gives you just what it says..
> See details athttp://www.wescottdesign.com/actfes/actfes.html

This is related to so-called "log-domain filters", which are
externally linear but internally non-linear; a search of google
scholar will turn up hundreds of articles. Most are continuous-time
but I believe Tsividis covered the discrete-time version.

Another thing this reminds me of is modeling (and possibly cancelling)
intersymbol interference in a 1-bit stream. If x(n) is restricted to
values +1 and -1, then x(n)*x(n-1) is only -1 when a transition has
ocurred, and with intersymbol interference, the error is all in the
transitions.

From: ac123 on
Thanks for all the helpful responses, I will look into log-domain filters,
I think it's what I'm after.