非周期信号 进行傅里叶变换

概念:非周期序列包括:准周期与瞬态信号。前者是指 组成信号的正弦函数频率之比不是有理数。后者指 一段时间内信号的频率,幅值是变化的。

==============准周期信号======================

# 采样间隔
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张图片

非周期信号 进行傅里叶变换_第2张图片
分析:为什么有的幅值不是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函数将数组连接起来


得到信号的幅频图:

非周期信号 进行傅里叶变换_第3张图片
可见,不光能量缩减,而且缺乏时间信息,第一个与第三个时间段的信号频率相同,但重叠在一起根本无法区分。
关于随时间而频率变化的信号,需要进行时频分析,采样短时傅里叶变换以及小波变换。

你可能感兴趣的:(信号处理)