next up previous contents index
Next: Phase bashing Up: Phase Previous: Phase   Contents   Index

Phase relationships between channels

In the scheme above, the phase of each $S[m, k]$ depends only on the previous value for the same channel. The phase relationships between neighboring channels are left to chance. This is adequate in some situations, but sometimes the incoherence of neighboring channels gives rise to an unintended chorus effect. We would ideally like for $S[m, k]$ and $S[m,k+1]$ to have the same phase relationship as for $T'[k]$ and $T'[k+1]$, but also for the phase relationship between $S[m, k]$ and $S[m-1,k]$ to be the same as between $T'[k]$ and $T[k]$.

These $2N$ equations for $N$ phases in general will have no solution, but we can alter the equation for $S[m, k]$ above so that whenever there happens to be a solution to the over-constrained system of equations, the reconstruction algorithm homes in on the solution. This approach is called phase locking [Puc95], and has the virtue of simplicity although more sophisticated techniques are available [DL97]).

The condition for an exact solution to exist at stage $m$ is that:

\begin{displaymath}
\angle T[k+1] - \angle T[k] = \angle S[m-1, k+1] - \angle S[m-1, k]
\end{displaymath}

or, rearranging:

\begin{displaymath}
\angle \left \{ {{S[m-1, k+1]} \over {T[k+1]}} \right \} =
\angle \left \{ {{S[m-1, k]} \over {T[k]}} \right \}
\end{displaymath}

With this in mind, we can rewrite the recursion formula for $S[m, k]$:

\begin{displaymath}
S[m, k] \; = \;
{
{ \left \vert
R[k]
\right \vert}
^
{-1}
}
\; \cdot \;
{
{R[k] T'[k]}
}
\end{displaymath}

with

\begin{displaymath}
R[k] \; = \;
{
{{S[m-1, k]}
\over
{T[k]} \; \cdot \;
{ \left \vert
{S[m-1, k]}
\right \vert}
}
}
\end{displaymath}

where the $R[k]$ should all be in phase. The trick is now to replace $R[k]$ for each $k$ with the sum of three neighboring ones. The computation is then:

\begin{displaymath}
S[m, k] \; = \;
{
{ \left \vert
R'[k]
\right \vert}
^
{-1}
}
\; \cdot \;
{
{R'[k] T'[k]}
}
\end{displaymath}

with

\begin{displaymath}
R'[k] = R[k+1] + R[k] + R[k-1]
\end{displaymath}

If the channels are already in the correct phase relationship, this has no effect (the resulting phase will be the same as if only $R[k]$ were used.) But in general the sum will share two terms in common with its neighbor:

\begin{displaymath}
R'[k+1] = R[k+2] + R[k+1] + R[k]
\end{displaymath}

so that the $R'$ will tend to point more in the same direction than the $R$ do. Applying this iteratively will eventually line all the $R'$ up to the same phase, as long as the phase relationships between the measured spectra $T$ and $T'$ allow it.


next up previous contents index
Next: Phase bashing Up: Phase Previous: Phase   Contents   Index
Miller Puckette 2005-04-01