这个代码主要由两部分组成,第一部分是一个正弦波,这部分是copy的;另一部分是重采样,这部分也是copy的。
虽然后面的东西没有做,但好歹这是我第一个仅凭百度和微信就完成的代码,也算是我python道路上的里程碑了
python
import numpy as np
import random
import matplotlib.pyplot as plt
from scipy import interpolate
def sin_wave(A, f, fs, phi, t):
'''
:params A: 振幅
:params f: 信号频率
:params fs: 采样频率
:params phi: 相位
:params t: 时间长度
'''
# 若时间序列长度为 t=1s,
# 采样频率 fs=1000 Hz, 则采样时间间隔 Ts=1/fs=0.001s
# 对于时间序列采样点个数为 n=t/Ts=1/0.001=1000, 即有1000个点,每个点间隔为 Ts
Ts = 1/fs
n = t / Ts
n = np.arange(n)
y = A*np.sin(2*np.pi*f*n*Ts + phi*(np.pi/180))
return y
# f=50 hz
fs = 4800
hz_50 = sin_wave(A=1, f=50, fs=fs, phi=0, t=0.08)
python
flinear = interpolate.interp1d(x, hz_50)
fcubic = interpolate.interp1d(x, hz_50, kind='cubic')
xnew = np.arange(0.001, 1, 1)
ylinear = flinear(xnew)
ycubic = fcubic(xnew)
plt.plot(x, hz_50, 'X', xnew, ylinear, 'x', xnew, ycubic, 'o')
plt.show()