Skip to content

这个代码主要由两部分组成,第一部分是一个正弦波,这部分是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()