抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

最近計算宇宙學的21cm 強度映射3D功率譜,我主要計算的多級功率譜。我使用numpy.fft計算,其中對於個數為偶數的數組tb,假設tb.shape=(Nx,Ny,Nz),numpy.fft返回的數組tb_fft對應情況(以第一維度舉例):

  • tb_fft[0]:0頻率,表示輸入信號的平均值,一般直接扔掉

  • tb_fft[1:Nx//2]:正頻率

  • tb_fft[Nx//2]:正負奈奎斯特頻率

  • tb_fft[Nx//2+1:]:負頻率

下面是檢驗三維數組是否滿足對稱性(注意,此數組僅適用於實數,沒考慮複數):

1
2
3
4
5
6
7
8
9
10
11
def check_symmetry(power_spectrum,shape):
# 計算正負頻率的對稱性
for i in range(1,shape[0]//2 + 1): # 從1到n//2
for j in range(1,shape[1]//2 + 1): # 從1到n//2
for k in range(1,shape[2]//2 + 1): # 從1到n//2
# 對稱性應滿足:power_spectrum[i, j, k] == power_spectrum[-(i+1), -(j+1), -(k+1)] # 因為這裡檢驗的是實數
# 對於負頻率部分,應該與正頻率部分的復共軛對稱
if not np.allclose(power_spectrum[i, j, k], power_spectrum[-i, -j, -k]):
print(f"Frequency symmetry check failed at ({i}, {j}, {k})")
return False
return True

至於其他包含奇數的情況,以後用到在更新

參考

評論



Powered by Hexo | Theme keep Volantis

本站總訪問量 總訪客數 🌎