傅立葉變換(FFT)在各種巡天中經常被應用,其中,計算星係數密度的三維功率譜需要使用三維傅立葉變換,這其中需要注意歸一化問題。
假設星係數密度漲落是$F(r)$,其中$r = (x,y,z)$
傅立葉變換:
連續傅立葉變換對:
\begin{align}
F(\vec{k}) = \int F(\vec{r}) e^{-i\vec{k} \cdot \vec{r}} {\rm d}\vec{r}
\end{align}
\begin{align}
F(\vec{r}) = \frac{1}{(2\pi)^3}\int F(\vec{k}) e^{i\vec{k} \cdot \vec{r}} {\rm d}\vec{k}
\end{align}
注意,這裡的 ${\rm d}\vec{r}$ 和 ${\rm d}\vec{k}$ 都是三維空間中的體積微元,分別表示 ${\rm d}r_x {\rm d}r_y {\rm d}r_z$ 和 ${\rm d}k_x {\rm d}k_y {\rm d}k_z$。離散傅立葉變換對:
\begin{align}
F(\vec{k}) = \sum_i F(\vec{r}) e^{-i\vec{k} \cdot \vec{r}}
\end{align}
\begin{align}
F(\vec{r}) = \frac{1}{N^3} \sum_i^N F(\vec{k}) e^{-i\vec{k} \cdot \vec{r}}
\end{align}
星係數密度功率譜
對於角平均的功率譜(不是角功率譜),星係數密度功率譜是傅立葉變換模方的期望值:
\begin{align}
\left < F(\vec{k})^* F(\vec{k}) \right > = (2\pi)^3\delta_{\rm D} (\vec{k}+\vec{k}^\prime)P(\vec{k})
\end{align}
星係數密度的量綱為 1,坐標位置的量綱一般為 $h^{-1}\ {\rm Mpc}$。公式(5)定義了星系功率譜,單位:${\rm length}^6 = {\rm length}^3 P(k)$,此時功率譜的單位為 ${\rm length}^3$。這樣功率譜的歸一化可以從兩方面考慮:
$(2\pi)^3$歸一化:
與連續FFT的係數$(2\pi)^3$相比,離散傅立葉變換的係數相當於$N^3$,因此如果numpy.fft.fftn選擇的歸一化norm = 'ortho',那麼離散傅立葉變換對為:
\begin{align}
F(\vec{k}) = \frac{1}{\sqrt{N^3}} \sum_i F(\vec{r}) e^{-i\vec{k} \cdot \vec{r}}
\end{align}
\begin{align}
F(\vec{r}) = \frac{1}{\sqrt{N^3}} \sum_i^N F(\vec{k}) e^{-i\vec{k} \cdot \vec{r}}
\end{align}單位歸一化,公式(1)(2)連續FFT是包含單位的,而計算FFT的程序
numpy.fft.fftn不含單位,相當於:
\begin{align}
F(\vec{k}) = \frac{1}{\sqrt{N^3 \delta V_r}} \sum_i F(\vec{r}) e^{-i\vec{k} \cdot \vec{r}} \sqrt{\delta V_r}
\end{align}
\begin{align}
F(\vec{r}) = \frac{1}{\sqrt{N^3 \delta V_r}} \sum_i^N F(\vec{k}) e^{-i\vec{k} \cdot \vec{r}} \sqrt{\delta V_k}
\end{align}
這裡$\sqrt{\delta V_r}=1$,因此為了單位保持一致還需要將每個numpy的FFT結果乘以一個$\sqrt{\delta V_r}$,整體上就相當於乘以$\delta V_r = \delta r_x \delta r_y \delta r_z$。