# Blind System Identification

Started by January 17, 2007
```Okay, so I'm trying to work my way through "Blind System Identification
and Channel Equalization of IIR Systems without Statistical
Information", by Bai and Fu; specifically "Algorithm 4.1".  Though the
nomenclature seems to be standard for multirate systems, it is
cumbersome.  But I think I've got a good handle on the technique, up to
the point just beyond equation (4.6), where it says:

.  "... as far as equalization is concerned, either G0(z) or G1(z) is
.  sufficient to recover the input because
.                  -1            -1
.  U0(z^(n+1)) =3D G0 (z)Y0(z) =3D G1 (z)Y1(z)"

In equation (4.6) they stated that:

.          beta0(z)          beta1(z)
.  G0(z) =3D --------, G1(z) =3D --------
.          alpha(z)          alpha(z)

And in the neighborhood of equation (4.5) they stated that:

alpha(z) =3D 1 - a1z^(-1) - ... - anz^(-n)
beta0(z) =3D B01z^(-1) + B02z^(-2) + ... + B0nz^(-n)
beta1(z) =3D B11 + B12z^(-1) + ... + B1nz^(-(n-1))

Since it doesn't matter whether we use G0 or G1 to solve for U0, I
tried using G0:
.                  -1
.  U0(z^(n+1)) =3D G0 (z)Y0(z)

or:
.                alpha(z)
.  U0(z^(n+1)) =3D -------- Y0(z)
.                beta0(z)

For simplicity, define:
U(z) =3D U0(z^(n+1))

then:
U(z)=B7beta0(z) =3D Y0(z)=B7alpha(z)

U(z)=B7[B01z^(-1)+B02z^(-2)+...+B0nz^(-n)]=3DY0(z)=B7[1-a1z^(-1)-...-anz^(-=
n)]

so:

U(z)=B7B01z^(-1)=3DY0(z)=B7[1-a1z^(-1)-...-anz^(-n)]-U(z)=B7[B02z^(-2)+...+=
B0nz^(-n)]

Assuming causality, the time domain difference equation can be written
by inspection:

(B01)u(k-1)=3Dy0(k)-(a1)y0(k-1)-...-(an)y0(k-n)-(B02)u(k-2)-...-(B0n)u(k-n)

And this is causing me consternation: the system is anticipatory.  The
output value at PREVIOUS time "u(k-1)" is dependent upon the input
value at CURRENT time "y0(k)".  Also, if the same analysis is performed
using G1 instead of G0, a causal system results.  So either there is an
error in the paper or there is an error in my analysis of it; I'm not
certain which.

I suspect that the problem is in the definition of beta0:
beta0(z) =3D B01z^(-1) + B02z^(-2) + ... + B0nz^(-n)

I think that it should be:
beta0(z) =3D B01 + B02z^(-1) + ... + B0nz^(-(n-1))

Can anybody provide some insight into this for me?

Thanks,
Greg Berchin

```
```"Greg Berchin" <gberchin@sentientscience.com> wrote in message
Okay, so I'm trying to work my way through "Blind System Identification
and Channel Equalization of IIR Systems without Statistical
Information", by Bai and Fu; specifically "Algorithm 4.1".  Though the
nomenclature seems to be standard for multirate systems, it is
cumbersome.  But I think I've got a good handle on the technique, up to
the point just beyond equation (4.6), where it says:

.  "... as far as equalization is concerned, either G0(z) or G1(z) is
.  sufficient to recover the input because
.                  -1            -1
.  U0(z^(n+1)) = G0 (z)Y0(z) = G1 (z)Y1(z)"

In equation (4.6) they stated that:

.          beta0(z)          beta1(z)
.  G0(z) = --------, G1(z) = --------
.          alpha(z)          alpha(z)

And in the neighborhood of equation (4.5) they stated that:

alpha(z) = 1 - a1z^(-1) - ... - anz^(-n)
beta0(z) = B01z^(-1) + B02z^(-2) + ... + B0nz^(-n)
beta1(z) = B11 + B12z^(-1) + ... + B1nz^(-(n-1))

Since it doesn't matter whether we use G0 or G1 to solve for U0, I
tried using G0:
.                  -1
.  U0(z^(n+1)) = G0 (z)Y0(z)

or:
.                alpha(z)
.  U0(z^(n+1)) = -------- Y0(z)
.                beta0(z)

For simplicity, define:
U(z) = U0(z^(n+1))

then:
U(z)&#2013266103;beta0(z) = Y0(z)&#2013266103;alpha(z)

U(z)&#2013266103;[B01z^(-1)+B02z^(-2)+...+B0nz^(-n)]=Y0(z)&#2013266103;[1-a1z^(-1)-...-anz^(-n)]

so:

U(z)&#2013266103;B01z^(-1)=Y0(z)&#2013266103;[1-a1z^(-1)-...-anz^(-n)]-U(z)&#2013266103;[B02z^(-2)+...+B0nz^(-n)
]

Assuming causality, the time domain difference equation can be written
by inspection:

(B01)u(k-1)=y0(k)-(a1)y0(k-1)-...-(an)y0(k-n)-(B02)u(k-2)-...-(B0n)u(k-n)

Would have thought you can view this as:

y is your output for a control signal at a previous time

control action dosn't appear instantly at the output

And this is causing me consternation: the system is anticipatory.  The
output value at PREVIOUS time "u(k-1)" is dependent upon the input
value at CURRENT time "y0(k)".  Also, if the same analysis is performed
using G1 instead of G0, a causal system results.  So either there is an
error in the paper or there is an error in my analysis of it; I'm not
certain which.

I suspect that the problem is in the definition of beta0:
beta0(z) = B01z^(-1) + B02z^(-2) + ... + B0nz^(-n)

I think that it should be:
beta0(z) = B01 + B02z^(-1) + ... + B0nz^(-(n-1))

Can anybody provide some insight into this for me?

Thanks,
Greg Berchin

```
```On Mon, 22 Jan 2007 00:48:37 GMT, "Setanta" <a@a.aaa> wrote:

>Would have thought you can view this as:
>
>y is your output for a control signal at a previous time
>
>control action dosn't appear instantly at the output

This is an inverse system, so y0() is the input and I'm solving for u().

Greg
```
```"Greg Berchin" <gberchin@comicast.net> wrote in message
news:7s38r2l4tqh2nlr2rqkvipa14i3pjpcjc6@4ax.com...
> On Mon, 22 Jan 2007 00:48:37 GMT, "Setanta" <a@a.aaa> wrote:
>
> >Would have thought you can view this as:
> >
> >y is your output for a control signal at a previous time
> >
> >control action dosn't appear instantly at the output
>
> This is an inverse system, so y0() is the input and I'm solving for u().
>
> Greg

This gives a good view of what the MA paramaters should look like

http://darbelofflab.mit.edu/ProgressReports/HomeAutomation/Report3-2/Report%
202.pdf

Would be interested in looking at the data

Setanta

```
```Hello Greg,

I have this in a nonlinear analysis book for a control function, but in
your context think of a fft, run the inverse.
```
```On 19 Okt, 02:48, "coderanger" <godd...@inbox.com> wrote:
> Hello Greg,
>
> I have this in a nonlinear analysis book for a control function, but in
> your context think of a fft, run the inverse.

I would have paid meticulous attention to the details of the
notatiopnal simplification introducing U(z) instead of
U(z^(n+1)). If that change is not accounted for correctly,
you might just end up with one or two anticausal terms.

Rune

```
```On Oct 19, 8:08 am, Rune Allnor <all...@tele.ntnu.no> wrote:

> I would have paid meticulous attention to the details of the
> notatiopnal simplification introducing U(z) instead of
> U(z^(n+1)). If that change is not accounted for correctly,
> you might just end up with one or two anticausal terms.

It's been quite a while since I looked at this, but I recall
experimenting with several formulations containing varying amounts of
causal and anticausal delay (where causality is referenced to the
inverse system).  Basically, I found that any formulation that
differed from the one in the original paper either led to a matrix
that was not of full-rank, and therefore could not be inverted, or to
an inverse system in which one or more of the leading coefficients
(corresponding to anticausal terms) was zero.  The project ended
before I could sort through all of the mathematics behind this, but my
conclusion was that the authors used the specific formulation
described in their paper because it was the only one that actually
worked.

Greg

```