可以通过先内插再采样的方法实现功能。
如有20Khz采样率的采样信号,希望得到该波形在24Khz采样率下的信号,可以先将采样信号内插12倍,再进行10倍下采样。
内插函数可以选用scipy的样条插值函数
import scipy.interpolate as spi
def wave_process(original_data):
data_num = len(original_data)
interp_rate = 12
inter_data_num = data_num * interp_rate
old_x = [ i for i in range(data_num)]
new_x = [i/interp_rate for i in range(inter_data_num)] #内插后以更小的间距进行填充
ipo3=spi.splrep(old_x,original_data, k=3) #k=3,三次样条插值
iy3=spi.splev(new_x,ipo3) #根据观测点和样条参数,生成插值
down_rate = 10
sample_frac = 1/down_rate
node_inter = int(1 / sample_frac)
node_num = int(inter_data_num / node_inter)
print (node_num, node_inter)
sample_y = []
for i in range(node_num):
sample_y.append(iy3[i*node_inter])
return sample_y