- #1

intervoxel

- 195

- 1

- TL;DR Summary
- A recursive generator of a quadrature signal which fits exactly in a NxN grid, where N is a large power of two.

I need to recursively generate a quadrature signal which fits exactly into a grid NxN, where N is a large power of two.

After unsuccessful research, I decided to develop my own solution, starting from the waveguide-form oscillator taken from Pete Symons' book 'Digital wave generation, p. 100'.

\begin{gather}

\begin{bmatrix}\hat{ y_1}\\\hat{y_2}\end{bmatrix}

=

\begin{bmatrix}

k &k-1\\

k+1&k

\end{bmatrix}

\begin{bmatrix} y_1\\y_2\end{bmatrix}

\end{gather}

where [itex]k=cos(\omega T)[/itex].

This formula works perfectly when using floating point numbers.

In the case of the NxN grid, we have [itex]\omega T=2\pi/N[/itex], and the amplitude is [itex]N/2[/itex].

For [itex]N>>1[/itex], we have [itex]k=N/2-1[/itex].

The difference equations then become

\begin{gather}

\hat{ y_1}=\frac{2((N/2-1)y_1 - y_2)}{N}

\end{gather}

and

\begin{gather}

\hat{ y_2}=\frac{2((N-1)y_1 + (N/2-1)y_2))}{N}

\end{gather}

If we initialize [itex]N=128[/itex] and [itex]y_1=N/2[/itex], [itex]y_2=0[/itex], we get for the first iteration the values [itex]\hat{y_1}=63[/itex] and [itex]\hat{y_2}=127[/itex] (it was expected a low value!). That is, [itex]y_2>N/2[/itex].

What went wrong? Thank you for any help.

After unsuccessful research, I decided to develop my own solution, starting from the waveguide-form oscillator taken from Pete Symons' book 'Digital wave generation, p. 100'.

\begin{gather}

\begin{bmatrix}\hat{ y_1}\\\hat{y_2}\end{bmatrix}

=

\begin{bmatrix}

k &k-1\\

k+1&k

\end{bmatrix}

\begin{bmatrix} y_1\\y_2\end{bmatrix}

\end{gather}

where [itex]k=cos(\omega T)[/itex].

This formula works perfectly when using floating point numbers.

In the case of the NxN grid, we have [itex]\omega T=2\pi/N[/itex], and the amplitude is [itex]N/2[/itex].

For [itex]N>>1[/itex], we have [itex]k=N/2-1[/itex].

The difference equations then become

\begin{gather}

\hat{ y_1}=\frac{2((N/2-1)y_1 - y_2)}{N}

\end{gather}

and

\begin{gather}

\hat{ y_2}=\frac{2((N-1)y_1 + (N/2-1)y_2))}{N}

\end{gather}

If we initialize [itex]N=128[/itex] and [itex]y_1=N/2[/itex], [itex]y_2=0[/itex], we get for the first iteration the values [itex]\hat{y_1}=63[/itex] and [itex]\hat{y_2}=127[/itex] (it was expected a low value!). That is, [itex]y_2>N/2[/itex].

What went wrong? Thank you for any help.