python数字信号处理—采样与重构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python数字信号处理—采样与重构第⼀章
步骤⼆:信号抽样和重构(tu1_3_sinsmpling.py)
import numpy as np
import pylab as pl
import scipy.signal as signal
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei'] #图形中正确显⽰汉字
import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False #坐标轴正确显⽰负数
# 产⽣50Hz的模拟信号
# 较⾼的采样频率2000Hz模拟
f0 = 50 # 50Hz
Fs = 2000 # 模拟信号采样频率为2000Hz
t = np.arange(-0.1, 0.1, 1/Fs) # 产⽣-0.1s-0.1s范围的信号
xat = np.sin(2*np.pi*f0*t + np.pi/8) #产⽣f0=50Hz信号
# 抽样频率200Hz产⽣信号
# ⽅法⼀:⽤函数重新⽣成
# ⽅法⼆:对步骤⼀模拟信号进⾏抽样
fs = 200 # sampling rate 200Hz
Ts = 1/fs # sampling perido
n = np.arange(-0.1/Ts, 0.1/Ts) #对应的时间轴
# xn = np.sin(2*np.pi*f0/fs*n + np.pi/8) #⽅法⼀
tmpn = np.arange(-0.1*Fs, 0.1*Fs, Fs/fs) #⽅法⼆抽样
tmpn = list(map(int, tmpn+200)) #矩阵下标平移
xn = xat[tmpn] #抽取对应采样点的数据
# 利⽤采样重构公式进⾏重构
xat = []
xatt = 0
for ti in t:
for nj in n:
#xskt = np.cos(2*np.pi*f0/fs*nj + pi/8);
xskt = xn[int(nj+20)] #下标移位
if (ti == nj*Ts):
piRt = 1 # 在采样点时,系数为1,以免造成分母为0的情况else: #构建插值函数piRt = (np.sin(np.pi / Ts * (ti - nj * Ts))) / (np.pi / Ts * (ti - nj * Ts))
xatt = xatt + xskt * piRt #与插值函数相乘
xat = np.append(xat, xatt) #序列追加
xatt = 0
pl.figure(1, figsize=(7,6))
pl.subplot(3,1,1)
pl.plot(t, xat)
pl.title('continunous wave')
#pl.xlabel('Time (s)')
pl.xlim(-0.1,0.1)
pl.ylim(-1,1)
pl.grid(1)
pl.subplot(3,1,2)
pl.stem(n, xn)
pl.title('Sample Wave')
plt.subplots_adjust(top=1, wspace=0.2, hspace=0.5) # 调整视图
pl.subplot(3,1,3)
pl.plot(t, xat)
pl.title('reconstructed signal')
pl.xlabel('Time (s)')
pl.xlim(-0.1,0.1)
pl.ylim(-1,1)
pl.grid(1)
plt.subplots_adjust(top=1, wspace=0.2, hspace=0.4) # 调整视图
plt.savefig('figure1_3.jpg', bbox_inches='tight', dpi=300, pad_inches=0.1) #保存⽂件,300dpi pl.show()
图2 信号的采样与重构。

相关文档
最新文档