说,我创建了一个 Hermitian 复数信号,使用
import numpy as np
t = np.arange(-4, 4)
z = np.exp(1j * t)
这z
应该是一个具有 Hermitian 对称性的复杂信号,如下所示。
In [2]: t
Out[2]: array([-4, -3, -2, -1, 0, 1, 2, 3])
In [3]: z
Out[3]:
array([-0.65364362+0.7568025j , -0.98999250-0.14112001j,
-0.41614684-0.90929743j, 0.54030231-0.84147098j,
1.00000000+0.j , 0.54030231+0.84147098j,
-0.41614684+0.90929743j, -0.98999250+0.14112001j])
但是当我对这个信号进行傅里叶变换时,我没有得到真正的频谱,
In [8]: np.fft.fft(z)
Out[8]:
array([-1.38531768+0.7568025j, -7.02599565+0.7568025j,
2.57935201+0.7568025j, 0.93952139+0.7568025j,
0.41344309+0.7568025j, 0.08151870+0.7568025j,
-0.22205190+0.7568025j, -0.60961892+0.7568025j])
但是,当我使用该hfft
函数进行 Hermitian FFT 时,我得到
In [10]: np.fft.hfft(z[:5])
Out[10]:
array([-1.38531768, -7.02599565, 2.57935201, 0.93952139, 0.41344309,
0.0815187 , -0.2220519 , -0.60961892])
这是我使用常规fft
函数得到的结果的真正组成部分。我不明白我在这里做错了什么。当输入是 Hermitian 时,不fft
应该给出一个虚部为零或几乎为零的结果吗?
我觉得我在这里做错了关于如何将信号呈现给fft
.