好文档 - 专业文书写作范文服务资料分享网站

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)] #下标移位

1

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) pl.show()

#保存文件,300dpi 2

图2 信号的采样与重构

3

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

第一章步骤二:信号抽样和重构(tu1_3_sinsmpling.py)importnumpyasnpimportpylabasplimportscipy.signalassignalimportmatplotlib.pyplotaspltfrompylabimport*mpl.rcParam
推荐度:
点击下载文档文档为doc格式
85zgj4db9r9x6b742rz56u75f0b3w101dc3
领取福利

微信扫码领取福利

微信扫码分享