Matrice di Fourier
# Matrice di Fourier

La matrice di Fourier è una matrice complessa simmetrica del tipo di Vandermonde che esprime in forma matriciale la trasformata discreta di Fourier (DFT).

## Definizione

Una trasformata discreta di Fourier (DFT) che trasforma una successione di N numeri complessi $x_{0},\dots ,x_{N-1}$ nella successione di N numeri complessi $X_{0},\dots ,X_{N-1}$ è espressa come una moltiplicazione tra matrici:

    $X=\mathbf {F} _{N}x$

Esplicitamente:

    $\mathbf {F} _{N}={\begin{bmatrix}\omega _{N}^{0\cdot 0}&\omega _{N}^{0\cdot 1}&\ldots &\omega _{N}^{0\cdot (N-1)}\\\omega _{N}^{1\cdot 0}&\omega _{N}^{1\cdot 1}&\ldots &\omega _{N}^{1\cdot (N-1)}\\\vdots &\vdots &\ddots &\vdots \\\omega _{N}^{(N-1)\cdot 0}&\omega _{N}^{(N-1)\cdot 1}&\ldots &\omega _{N}^{(N-1)\cdot (N-1)}\\\end{bmatrix}}={\begin{bmatrix}\omega _{N}^{jk}\\\end{bmatrix}}\qquad j,k=0,1,\dots ,N-1$

dove $\omega _{N}$ è una radice dell'unità primitiva N-esima e le sue potenze $\omega _{N}^{k}$, con $k=0,1,...,N-1$, costituiscono tutte le radici N-esime dell'unità.

Nella formulazione standard si assume $\omega _{N}=e^{-2\pi i/N}$: in tal caso la matrice di Fourier è propriamente associata alla trasformata discreta di Fourier (DFT). In altre formulazioni si adotta la convenzione con $\omega _{N}=e^{2\pi i/N}$, e in tal caso la matrice di Fourier, a meno del fattore $1/N$, risulta associata all'inversa della trasformata discreta di Fourier (IDFT).

## Proprietà

I vettori colonna e riga della matrice di Fourier sono ortogonali. In particolare, indicando con $\mathbf {\overline {F}} _{N}$ la matrice coniugata di $\mathbf {F} _{N}$:

    $\mathbf {\overline {F}} _{N}={\begin{bmatrix}\omega _{N}^{-jk}\\\end{bmatrix}}$

risulta:

    $\left(\mathbf {F} _{N}\mathbf {\overline {F}} _{N}\right)_{rs}=\sum _{k=0}^{N-1}\omega _{N}^{rk}\omega _{N}^{-ks}=\sum _{k=0}^{N-1}\omega _{N}^{k(r-s)}=\left\{{\begin{matrix}N&r=s\\\\0&r\neq s\end{matrix}}\right.$

Infatti, posto $q=r-s\not =0$:

    $\sum _{k=0}^{N-1}\omega _{N}^{kq}=1+\omega _{N}^{q}+\omega _{N}^{2q}+\dots +\omega _{N}^{(N-1)q}$

da cui:

    $\omega _{N}^{q}\cdot \sum _{k=0}^{N-1}\omega _{N}^{kq}=\omega _{N}^{q}+\omega _{N}^{2q}+\omega _{N}^{3q}+\dots +\omega _{N}^{(N-1)q}+\omega _{N}^{Nq}=1+\omega _{N}^{q}+\omega _{N}^{2q}+\dots +\omega _{N}^{(N-1)q}=\sum _{k=0}^{N-1}\omega _{N}^{kq}$

considerando il primo e l'ultimo termine:

    $\left(\omega _{N}^{q}-1\right)\cdot \sum _{k=0}^{N-1}\omega _{N}^{kq}=0$

che implica:

    $\sum _{k=0}^{N-1}\omega _{N}^{kq}=0$

Pertanto si ha:

    $\mathbf {F} _{N}\mathbf {\overline {F}} _{N}=N\mathbf {I} _{N}$

dove $\mathbf {I} _{N}$ è la matrice identità di ordine $N$.

La trasformata inversa si ricava mediante la matrice inversa:

    $\mathbf {F} _{N}^{-1}={\frac {1}{N}}\mathbf {\overline {F}} _{N}$
    $x=\mathbf {F} _{N}^{-1}X$

Inoltre, la matrice di Fourier normalizzata secondo il fattore $1/{\sqrt {N}}$ risulta essere una matrice unitaria:

    $\mathbf {U} _{N}=\mathbf {F} _{N}/{\sqrt {N}}\qquad \mathbf {U} _{N}^{-1}=\mathbf {\overline {U}} _{N}\qquad |\det(\mathbf {U} _{N})|=1$

## Fattorizzazione della matrice di Fourier

La fattorizzazione della matrice di Fourier in matrici sparse, contenenti cioè un gran numero di zeri e quindi tali da ridurre l'onere computazionale, è alla base degli algoritmi più diffusi per il calcolo della DFT, noti come trasformata di Fourier veloce (FFT).

Il caso più semplice si ha quando l'ordine della matrice è un numero pari (N = 2n). L'idea di base è quella di esprimere la matrice di Fourier di ordine 2n in termini della matrice di Fourier di ordine n. In tal caso, per le note proprietà della radice dell'unità, risulta infatti:

    $\omega _{2n}^{k}{\mbox{ con }}k=0,1,\dots ,2n-1=\left\{{\begin{matrix}\omega _{n}^{l}&l=0,1,\dots ,n-1&{\mbox{rispett. per }}k=0,2,\dots ,2n-2\\\\\omega _{n}^{l}\cdot \omega _{2n}&l=0,1,\dots ,n-1&{\mbox{rispett. per }}k=1,3,\dots ,2n-1\end{matrix}}\right.$

La matrice di Fourier di ordine 2n risulta:

    $\mathbf {F} _{2n}={\begin{bmatrix}\omega _{2n}^{0\cdot 0}&\omega _{2n}^{0\cdot 1}&\ldots &\omega _{2n}^{0\cdot (2n-1)}\\\omega _{2n}^{1\cdot 0}&\omega _{2n}^{1\cdot 1}&\ldots &\omega _{2n}^{1\cdot (2n-1)}\\\vdots &\vdots &\ddots &\vdots \\\omega _{2n}^{(2n-1)\cdot 0}&\omega _{2n}^{(2n-1)\cdot 1}&\ldots &\omega _{2n}^{(2n-1)\cdot (2n-1)}\\\end{bmatrix}}={\begin{bmatrix}\omega _{2n}^{0\cdot k}\\\omega _{2n}^{1\cdot k}\\\vdots \\\omega _{2n}^{(2n-1)\cdot k}\\\end{bmatrix}}={\begin{bmatrix}\omega _{2n}^{jk}\\\end{bmatrix}}{\mbox{ con }}j,k=0,1,\dots ,2n-1$

Indicando con $\mathbf {P} _{2n}$ la matrice di permutazione che riordina le colonne di $\mathbf {F} _{2n}$ anteponendo le colonne di indice pari ($k=0,2,\dots ,2n-2$) a quelle di indice dispari ($k=1,3,\dots ,2n-1$), risulta:

    $\mathbf {F} _{2n}\cdot \mathbf {P} _{2n}={\begin{bmatrix}\omega _{n}^{0\cdot l}&\vline &\omega _{n}^{0\cdot l}\cdot \omega _{2n}^{0}\\\omega _{n}^{1\cdot l}&\vline &\omega _{n}^{1\cdot l}\cdot \omega _{2n}^{1}\\\vdots &\vline &\vdots \\\omega _{n}^{(2n-1)\cdot l}&\vline &\omega _{n}^{(2n-1)\cdot l}\cdot \omega _{2n}^{(2n-1)}\\\end{bmatrix}}{\mbox{ con }}l=0,1,\dots ,n-1$

Le prime n righe della sottomatrice di sinistra coincidono, per definizione, con quelle della matrice di Fourier di ordine n, mentre le ultime n righe della sottomatrice di sinistra coincidono anch'esse con quelle della matrice di Fourier di ordine n. Risulta infatti:

    $\omega _{n}^{n\cdot l}=\omega _{n}^{0\cdot l}$
    $\omega _{n}^{(n+1)\cdot l}=\omega _{n}^{1\cdot l}$
    $\dots$
    $\omega _{n}^{(2n-1)\cdot l}=\omega _{n}^{(n-1)\cdot l}$

Le prime n righe della sottomatrice di destra coincidono con quelle della matrice prodotto fra la seguente matrice diagonale di ordine n e la matrice di Fourier di ordine n:

    $\mathbf {D} _{n}={\begin{bmatrix}\omega _{2n}^{0}&0&\ldots &0\\0&\omega _{2n}^{1}&\ldots &0\\\vdots &\vdots &\ddots &\vdots \\0&0&\ldots &\omega _{2n}^{(n-1)}\\\end{bmatrix}}$

Le ultime n righe della sottomatrice di destra coincidono, a meno del segno, con le prime n. Risulta infatti:

    $\omega _{2n}^{n}=\omega _{2n}^{n}\cdot \omega _{2n}^{0}=-\omega _{2n}^{0}$
    $\omega _{2n}^{(n+1)}=\omega _{2n}^{n}\cdot \omega _{2n}^{1}=-\omega _{2n}^{1}$
    $\dots$
    $\omega _{2n}^{(2n-1)}=\omega _{2n}^{n}\cdot \omega _{2n}^{(n-1)}=-\omega _{2n}^{(n-1)}$

Sulla base delle precedenti considerazioni, si può scrivere:

    $\mathbf {F} _{2n}\cdot \mathbf {P} _{2n}={\begin{bmatrix}\mathbf {F} _{n}&\vline &\mathbf {D} _{n}\cdot \mathbf {F} _{n}\\\hline \mathbf {F} _{n}&\vline &-\mathbf {D} _{n}\cdot \mathbf {F} _{n}\\\end{bmatrix}}={\begin{bmatrix}\mathbf {I} _{n}&\vline &\mathbf {D} _{n}\\\hline \mathbf {I} _{n}&\vline &-\mathbf {D} _{n}\\\end{bmatrix}}{\begin{bmatrix}\mathbf {F} _{n}&\vline &0\\\hline 0&\vline &\mathbf {F} _{n}\\\end{bmatrix}}$

e quindi ($\mathbf {P} _{2n}\cdot \mathbf {P} _{2n}^{T}=\mathbf {I} _{2n}$):

    $\mathbf {F} _{2n}={\begin{bmatrix}\mathbf {I} _{n}&\vline &\mathbf {D} _{n}\\\hline \mathbf {I} _{n}&\vline &-\mathbf {D} _{n}\\\end{bmatrix}}{\begin{bmatrix}\mathbf {F} _{n}&\vline &0\\\hline 0&\vline &\mathbf {F} _{n}\\\end{bmatrix}}\mathbf {P} _{2n}^{T}$

Come esempio di fattorizzazione nel caso $N=4$:

    $\mathbf {F} _{4}={\begin{bmatrix}1&1&1&1\\1&-i&-1&i\\1&-1&1&-1\\1&i&-1&-i\\\end{bmatrix}}={\begin{bmatrix}1&0&1&0\\0&1&0&-i\\1&0&-1&0\\0&1&0&i\\\end{bmatrix}}{\begin{bmatrix}1&1&0&0\\1&-1&0&0\\0&0&1&1\\0&0&1&-1\\\end{bmatrix}}{\begin{bmatrix}1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\\\end{bmatrix}}$

A seguito della fattorizzazione l'onere computazionale, inizialmente pari a $N^{2}$, diventa pari a: $2\left({\frac {N}{2}}\right)^{2}+{\frac {N}{2}}$. La matrice di permutazione ha un onere computazionale nullo. Il primo termine è relativo al doppio prodotto per la matrice di Fourier di ordine dimezzato. Il secondo termine è relativo al prodotto per la matrice diagonale $D$; il prodotto per la matrice $-D$ si ottiene infatti da quello per $D$ mediante un semplice cambio di segno.

Se l'ordine iniziale è una potenza di due $\left(N=2^{m}\right)$ il processo di fattorizzazione può continuare fino ad esprimere la matrice iniziale di ordine N in funzione di N matrici di Fourier di ordine 1 (coincidenti con la matrice identità di ordine N). In tal caso, l'onere computazionale residuo è quello relativo alle m matrici diagonali ottenute dalla fattorizzazione: $N/2\cdot m=(N/2)\log _{2}N$.

