傅里叶变换的基本性质

傅里叶变换的基本性质

总的来说,傅里叶变换有这样几个性质:

  • 线性性质(Linearity)
  • 平移性质(Shift)
  • 对称性质(Symmetry)
  • 卷积性质(Convolution)

参考 傅里叶变换-wikipedia

线性性质

线性性质:两个函数之和的傅里叶变换等于各自变换之和,反之亦然
linearity

import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt

%matplotlib inline
def generate_complex_signal(num_sample, k0):
    '''
    generate a complex signal
    
    num_sample : 信号的个数,即公式中的N
    k0 : 周期个数
    
    returns
    x : 复正弦信号
    '''
    
    n = np.arange(num_sample)
    x = np.exp(1j*2*np.pi*k0*n/num_sample)
    
    return x
num_sample = 100
k0 = 20
x1 = generate_complex_signal(num_sample, k0)

num_sample = 100
k0 = 10
x2 = generate_complex_signal(num_sample, k0)

X1 = fft(x1);
X2 = fft(x2);
mX1 = np.abs(X1);
mX2 = np.abs(X2);

x12 = x1 + x2;  # adding two signal
X12 = fft(x12);
mX12 = np.abs(X12);


# plot the results
plt.figure(figsize=(15,6))

plt.subplot(321)
plt.plot(x1)
plt.subplot(322)
plt.plot(x2)

plt.subplot(323)
plt.plot(mX1)
plt.subplot(324)
plt.plot(mX2)

plt.subplot(325)
plt.plot(mX1 + mX2)
plt.subplot(326)
plt.plot(mX12)

plt.show();

png

平移性质

在时域上对信号进行平移,那么等价于在频域的复平面上旋转一个角度

相反的,频域的复平面上旋转一个角度,等价于时域上的平移

可以证明平移只对DFT的相位有影响,并不会改变DFT的幅度

shift

x1 = np.linspace(0, 1.0, 50)
x1 = np.append(x1,0)
x1 = np.append(x1,np.linspace(-1.0, 0, 50))

shifted_x = np.roll(x1, 10) # shift signal

X1 = fft(x1)
shiftedX = fft(shifted_x)

mX1 = np.abs(X1)
pX1 = np.angle(X1)
pX1 = np.unwrap(pX1)

mshiftedX = np.abs(shiftedX)
pshiftedX = np.angle(shiftedX)
pshiftedX = np.unwrap(pshiftedX)

# plot the results
plt.figure(figsize=(15,6))

plt.subplot(321)
plt.plot(x1)
plt.subplot(322)
plt.plot(shifted_x)

plt.subplot(323)
plt.plot(mX1)
plt.subplot(324)
plt.plot(mshiftedX)

plt.subplot(325)
plt.plot(pX1)
plt.subplot(326)
plt.plot(pshiftedX)

plt.show();

png

对称性质

当x是实数信号,其傅里叶变换为X,则有对称性质:

  • R { X } \mathfrak{R}\{X\} R{X} 是偶对称 Z { X } \mathfrak{Z}\{X\} Z{X}是奇对称
  • ∣ X ∣ |X| X是偶对称, &lt; ∣ X ∣ &lt;|X| <X是奇对称

当x是偶对称的实数信号,其傅里叶变换为X,则有对称性质:

  • R { X } \mathfrak{R}\{X\} R{X}是偶对称 Z { X } = 0 \mathfrak{Z}\{X\}=0 Z{X}=0
  • ∣ X ∣ |X| X是偶对称, &lt; ∣ X ∣ = n π &lt;|X|=n\pi <X=nπ或者0

R \mathfrak{R} R表示取实部, Z \mathfrak{Z} Z表示取虚部, ∣ X ∣ |X| X为幅度, &lt; ∣ X ∣ &lt;|X| <X表示相位

(找不到合适的例子,就不写代码了,直接上课件中的图片)

symmetry
symmetry2

卷积性质

在时域上的卷积操作,可以转换为两个信号傅里叶变换后的点乘操作

相反的,傅里叶变换后的点乘,在时域上表现为卷积

convolution

convolution2

from scipy.signal import get_window

x1 = get_window('hanning', 256)
x2 = np.cos( np.linspace(0, 2*np.pi, 256) )
conv_x = np.convolve(x1, x2, 'same')

X1 = fft(x1)
X2 = fft(x2)
CX = fft(conv_x)

plt.figure(figsize=(15,6))

plt.subplot(321)
plt.plot(x1)
plt.subplot(322)
plt.plot(x2)

plt.subplot(323)
plt.plot(np.abs(X1))
plt.subplot(324)
plt.plot(np.abs(X2))

plt.subplot(325)
plt.plot(np.abs(CX))
plt.subplot(326)
plt.plot(np.abs(X1*X2))


plt.show()

png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值