变换原则

在不丢失信息的情况下:

实空间越长(d越大),频率空间越密。所以超胞越大,对应的频率空间点密度越大

实空间越密(N越大),频率空间越长,倒格矢G越大。所以实空间走得越精细,频率空间需要的截止能量Ecut就越大。避免基函数的数量比价电子的数量还少。

本质上是对易关系:

$$

\Delta x \Delta f = 1

$$

傅里叶变换

引言

要对一个非周期且连续的函数做傅里叶变换,可以分为两步走。

  1. 对这个连续函数进行抽样。变成离散的函数,为了最后能恢复出原信号,抽样频率要满足抽样定理。

## 抽样
t = np.linspace(0,1,Fs)

y = np.sin(2*np.pi*f1*t)*np.exp(-t/tao)
  1. 将这个离散函数周期化。然后求出其傅里叶级数,即DFT,此时求得的傅里叶级数是离散非周期傅里叶变换的抽样,这个抽样同样要满足抽样定理,也就是扩展的周期要足够大。 在具体实现的时候,并不用做周期化,因为我们调用FFT实现的就是DFT。FFT跟DFT区别只不过FFT利用傅里叶级数的特点降低了算法的时间复杂度,没有信息的丢失。

完整代码


import numpy as np

from scipy.fftpack import fft,ifft

import matplotlib.pyplot as plt

Fs = 1024

tao = 1/4

f1 = 200

t = np.linspace(0,1,Fs) # 如果区间从(0,2),那么FFT出来频率的结果就不对。因为频率间隔不是1,而是1/2了

y = np.sin(2*np.pi*f1*t)*np.exp(-t/tao)

plt.subplot(121)

plt.plot(t,y)  

plt.title('initial wave')

Y = np.abs(fft(y))/Fs

half_Y = Y[range(int(Fs/2))]

plt.subplot(122)

plt.plot(half_Y)

plt.title('FFT')