Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用衰减正弦信号的FFT数值微分_Python_Numpy_Fft_Differentiation - Fatal编程技术网

Python 用衰减正弦信号的FFT数值微分

Python 用衰减正弦信号的FFT数值微分,python,numpy,fft,differentiation,Python,Numpy,Fft,Differentiation,我试图通过对数据数组进行FFT,将该数组乘以频域乘以一个虚单位,最后进行逆变换,得到衰减正弦曲线的导数(图在左上角)。黄线是fft的导数。我在这种方法中遇到了两个问题: 有一个比例因子我无法求解。我甚至试着用“dt”相乘(下面的代码就是这么做的,图上也有),但这并不能完全解决我的问题,我也不知道为什么 如果我决定改用np.fft.rfft(),那么比例因子问题就会消失,但我现在有了一个非常“摇摆”的导数 我做错了什么 N=1000 t、 dt=np.linspace(-1,1,N,rets

我试图通过对数据数组进行FFT,将该数组乘以频域乘以一个虚单位,最后进行逆变换,得到衰减正弦曲线的导数(图在左上角)。黄线是fft的导数。我在这种方法中遇到了两个问题:

  • 有一个比例因子我无法求解。我甚至试着用“dt”相乘(下面的代码就是这么做的,图上也有),但这并不能完全解决我的问题,我也不知道为什么

  • 如果我决定改用
    np.fft.rfft()
    ,那么比例因子问题就会消失,但我现在有了一个非常“摇摆”的导数

  • 我做错了什么

    N=1000
    t、 dt=np.linspace(-1,1,N,retstep=True)
    a=10
    f=np.sin(a*t)*np.exp(-3*t)
    der=a*np.cos(a*t)*np.exp(-3*t)-3*np.sin(a*t)*np.exp(-3*t)
    f_fft=np.fft.fft(f,norm=“正交”)*dt
    freq=np.fft.fft移位(np.fft.fftfreq(N,d=dt))
    f_der_fft=np.fft.ifft(-1j*np.pi*2*freq*f_fft,norm=“正交”)
    图=plt.图(图尺寸=(20,8))
    gs=mpl.gridspec.gridspec(2,2)
    ax1=图add_子批次(gs[0,0])
    ax2=图add_子批次(gs[0,1])
    ax3=图add_子批次(gs[1,:])
    ax1.绘图(t,f)
    ax1.set_title(“要派生的函数”)
    ax2.绘图(t、der、label=“精确”)
    ax2.绘图(t,f_der_fft.real,label=“from fft”)
    ax2.集合标题(“衍生工具”)
    ax3.绘图(t,np.abs(f_der_fft.real der))
    ax3.设置刻度(“日志”)
    ax3.设置标题(“fft导数的绝对误差”)
    plt.show()
    
    现在是rfft的绘图: