Re: Iterative subspace decomposition

allnor_at_tele.ntnu.no
Date: 01/31/05


Date: 31 Jan 2005 03:13:10 -0800


Ryan Mitchley wrote:
> Hi all
>
> Sorry for the long post. This is probably a question for the fairly
> brave .
> . .
>
> I need to perform iterative subspace decomposition of data acquired
> from a
> sensor array. At the moment I am using MATLAB to simulate the system.
> So
> far, I have successfully implemented the PASTd algorithm (based on
this
> document: http://www.astron.nl/~hampson/adapalg.pdf although I think
> the
> technique was originally outlined by B. Yang, in "Projection
> Approximation
> Subspace Tracking," IEEE Transactions on Signal Processing, vol. 43,
> pp.
> 95-107, January 1995.). MATLAB code is below.
>
> Unfortunately, the PASTd algorithm does not produce orthogonal
> eigenvectors.
> I have found a couple of iterative algorithms that do, including one
> called
> NFRQ, described here: http://citeseer.ist.psu.edu/683342.html.
Although
> the
> algorithm is described quite nicely on page 3, I am struggling to get
> it to
> work in MATLAB. Basically, although the implementation seems to be
> syntactically correct, it is not producing the eigendecomposition I
> expect
> at all.
>
> In the hopes that someone can unravel my problem, I have posted the
> MATLAB
> code below. It seems to be a fairly useful algorithm, so I hope that
> that is
> something of a reward to anyone who can help!
>
> Thanks for any and all replies!
>
> Ryan Mitchley

Hi Ryan,

I can't go into the nitty-gritty details in your code, but there are
a few details that puzzle me. As far I can tell from the references,
these methods are designed for DoA-type applications. Parametric DoA
algorithms aim to express the observed signal in terms of a small
number
of sinusoidals. This is a very important point that you need to be
aware of, and you also need to somehow incorporate this in your tests.

First of all, you have a very small array. Five elements isn't a lot
to play with. If your signal contains more than one real-valued (or two

complex-valued) sinusoidals, the algorithm breaks down. I don't know
if that has something to do with your problem, though.

Second, I don't understand how you generate the test data. The way I
prefer to do things, is to synthesize the time series (real-valued
or complex-valued sinusoidals + white gaussian noise) and then estimate

the correlation matrix from there. As far as I can see, you generate
the autocorrelation matrix directly, and add noise on top of that.
It's not up to me to say that what you do is wrong, but I've never
seen it done like that before. Remember, the autocovariance matrixes
are Hermitian, that's why their eigenvectors are expected to be
orthogonal. If you somehow mess up the signal autocorrelation matrix
so that it is not Hermitian, the algorithms will not produce orthogonal
eigenvectors.

HTH,

Rune