非周期信号 进行傅里叶变换
概念:非周期序列包括:准周期与瞬态信号。前者是指 组成信号的正弦函数频率之比不是有理数。后者指 一段时间内信号的频率,幅值是变化的。
==============准周期信号======================
# 采样间隔
dt = 0.001
# 采样时间t1与t2
t1 = np.linspace(0,100,int(100/dt)) #因为100/dt是一个浮点数 需要int转化一下
t2 = np.linspace(1,100,int(100/dt))
#f1=10sqrt(2) f2=10sqrt(6) f3=10sqrt(12)
f1 = 10
w1 = np.sqrt(2)*2*np.pi*f1
w2 = np.sqrt(3)*w1
w3 = np.sqrt(6)*w1
# 构造出两个信号F1与F2 两者区别只是采样时间不同
F1 = np.sin(w1*t1)+np.sin(w2*t1)+np.sin(w3*t1)
F2 = np.sin(w1*t2)+np.sin(w2*t2)+np.sin(w3*t2)
得到两个幅频图:
分析:为什么有的幅值不是1,而有的几乎接近1 。
频率依次为 10*sqrt(2) 10*sqrt(6) 10*sqrt(12)
周期依次为 1/(10*sqrt(2)) 1/(10*sqrt(6)) 1/(10*sqrt(12))
采样时间为100s
采样时间/周期 1414.2135... 2449.4897... 3464.1016...
采样时间为99s
采样时间/周期 1400.0714... 2424.9948... 3429.4605...
我认为,不管是非周期采样的信号,还是准周期信号,只要采样时间与信号周期之比,越接近整数,进行FT后的结果更准确。
在此例中,即为更接近于幅值1 。
===============瞬态信号=====================
#采样间隔
dt = 0.001
#三个时间段,每个时间段内的频率不同
t1 = np.linspace(0,50,int(50/dt))
t2 = np.linspace(51,60,int(9/dt))
t3 = np.linspace(61,100,int(39/dt))
#f1=10 f2=50 f3=10
f1 = 10
w1 = 2*np.pi*f1
w2 = 5*w1
w3 = w1
F1 = np.sin(w1*t1)
F2 = np.sin(w2*t2)
F3 = np.sin(w3*t3)
F = np.hstack((F1,F2,F3)) #用了hstack函数将数组连接起来
得到信号的幅频图:
可见,不光能量缩减,而且缺乏时间信息,第一个与第三个时间段的信号频率相同,但重叠在一起根本无法区分。
关于随时间而频率变化的信号,需要进行时频分析,采样短时傅里叶变换以及小波变换。