我是否正确执行了 Sinesweep?

信息处理 matlab 频率 系统识别
2022-02-20 09:49:45

我有点不确定我是否正确地进行正弦扫描。我在给定的时间间隔内为我的系统提供 f 赫兹的正弦波并记录其输出。

然后我对另一个频率做同样的事情。

我尝试了这种技术,但似乎做的不正确,或者我认为。我测试了 2 个频率,并将它们输入 matlab 中的 Ident,得到了 98 % 的拟合率,这没有任何意义,它可以基于 2 个值构建一个如此好的波特图。

我做错了什么..它的输入不应该超过一个 2 还是足够了?

2个回答

LTI 系统的正弦扫描测量背后的理论需要频率不断变化的信号。您不能简单地播放几个音调 - 整个频率范围都是必要的。

所以如果你想用脉冲响应来识别你的系统h[n],你输入扫描正弦信号s[n]并记录输出。显然输出将由卷积给出:

y[n]=h[n]s[n]

为了获得系统的脉冲响应,需要对输出进行卷积y[n]使用逆滤波器f[n]. 通常,反滤波器是扫描信号,在时间上反相并具有缩放幅度。所以最后:

h[n]=y[n]f[n]


有两种主要类型的扫描信号:线性和对数(指数)频率变化。后者更常用,因为它的频谱类似于粉红噪声。就我个人而言,我总是使用对数扫描正弦:

s(t)=sin[2πf1Tln(2πf22πf1)(etTln(2πf22πf1)1)]

在哪里:

f1,f2- 扫描的初始和最终频率

T- 以秒为单位的扫描持续时间

对于扫描的长度没有严格的规定。例如在声学中,经验法则是它应该至少与预测的混响时间一样长。


有关该主题的更多文献,请参阅以下来源:

孟问,等。-使用正弦扫描和幅度调制方案进行脉冲响应测量

Farina A. -正弦扫描脉冲响应测量的进步

Farina A. -使用扫频正弦技术同时测量脉冲响应和失真

正弦扫描通常会覆盖整个感兴趣的频率范围。例如,对于音频,您的扫描频率可能为 20 Hz 到 20 kHz(或 16 kHz)。所有频率将在一个连续输出中扫过。您可以通过生成每个任意数量的样本递增sin(2*pi*n*f/fs)的样本来做到这一点fn