现在出来的图片是直线,没有赋值


import numpy as np
import librosa.display  # 导入音频及绘图显示包
import matplotlib.pyplot as plt  # 导入绘图工作的函数集合

times = librosa.get_duration(filename='D:\\信号与音频\\录音文件\\dingding.wav')  # 获取音频时长
# 返回音频采样数组及采样率
y, sr = librosa.load('D:\\信号与音频\\录音文件\\dingding.wav', sr=8000, offset=0.0, duration=None)
x = np.arange(0, times, 1/sr)


def pre_fun(x):  # 定义预加重函数
    signal_points=len(x)  # 获取语音信号的长度
    signal_points=int(signal_points)  # 把语音信号的长度转换为整型
    # s=x  # 把采样数组赋值给函数s方便下边计算
    for i in range(1, signal_points, 1):# 对采样数组进行for循环计算
        x[i] = x[i] - 0.98 * x[i - 1]  # 一阶FIR滤波器
    return x  # 返回预加重以后的采样数组
pre_emphasis = pre_fun(y)  # 函数调用
plt.plot(x, pre_emphasis)  # 绘出图形
plt.xlabel('times')  # x轴时间
plt.ylabel('amplitude')  # y轴振幅
plt.title('run.wav.wav', fontsize=12, color='black')  # 标题名称、字体大小、颜色
plt.show()  # 显示

pre_fun(x)里为什么要return x
你把输入的list给改了,可不成直线了吗
不要改形参,重新定义一个list起名叫y,return y
你以为你改x和实参没有关系,实际上list是个可变值类型,所以传入的y被直接改掉了
然后x和y其实值是一样的,所有x=y的点连线可不是直线是什么

第17行 赋值应该是signal_points
signal_points[i] = x[i] - 0.98 * x[i - 1] # 一阶FIR滤波器