使用扫频信号测量房间脉冲响应

使用指数扫频正弦信号,信号生成方法如下:

x(t)=sin(\frac{2\pi f_{1}T}{R}(e^\frac{tR}{T}-1))

其中:

        f_{1}f_{2}是扫频信号的起始频率和结束频率

        T是扫频信号的时长

        R=ln(\frac{f2}{f1}) 是扫频率

逆信号是通过缩放时间翻转的信号计算,计算方法如下:

f(t)=\frac{x_{inv}(t)}{k}

其中

k=e^\frac{tR}{T}

信号的脉冲响应

h(t)=x(t)*f(t)

扫频信号、逆信号、IR,以及频谱如下图:

参考程序如下

if __name__ == "__main__":
    # Sweep Parameters
    f1 = 10
    f2 = 100
    T = 3
    fs = 1000
    t = np.arange(0, T*fs)/fs
    R = np.log(f2/f1)

    # ESS generation
    x = np.sin((2*np.pi*f1*T/R)*(np.exp(t*R/T)-1))

    # Inverse filter
    k = np.exp(t*R/T)
    f = x[::-1]/k

    # Impulse response
    ir = sig.fftconvolve(x, f, mode='same')

    # Get spectra of all signals
    freq, Xdb = dbfft(x, fs)
    freq, Fdb = dbfft(f, fs)
    freq, IRdb = dbfft(ir, fs)

    plt.figure()
    plt.subplot(3,1,1)
    plt.grid()
    plt.plot(t, x)
    plt.title('ESS')

    plt.subplot(3,1,2)
    plt.grid()
    plt.plot(t, f)
    plt.title('Inverse filter')

    plt.subplot(3,1,3)
    plt.grid()
    plt.plot(t, ir)
    plt.title('Impulse response')


    plt.show()

参考文献:

Q. Meng - Impulse Response Measurement with Sine Sweeps and Amplitude Modulation Schemes

A. Novak - Nonlinear System Identification Using Exponential Swept-Sine Signal

K. Vetter - ExpoChirpToolbox - a Pure Data implementation of ESS impulse response measurement

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[](){}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值