如何校正用指数扫描正弦获得的对角沃尔泰拉核的相位?

信息处理 卷积 有限脉冲响应 非线性 核心
2022-02-19 12:59:52

我正在尝试使用非线性卷积和 Novak (2010) 同步指数正弦信号 (SESS) 对非线性系统进行建模,该系统使用广义 Hammerstein (Volterra 对角线) 对它们进行建模。

在 SNR 方面,我得到了非常清晰的内核,但明显是相位失真的。这是实际估计中的常见问题。

从理论上讲,我可以通过时间压缩逆柯克比滤波器来纠正它们(Farina,2007)。

[第一个答案后编辑] 我使用来自http://ant-novak.com/Swept_Sine_Simulation.php的 Novak 自己的代码

变化:内核数量和采样频率增加了一倍,并提高了很多 SESS 持续时间,以实现更好的内核分离。

fs = 192000;         % sampling frequency
f1 = 10;            % start frequency
f2 = 12000;         % final frequency
T_ = 50;            % approximative time duration
N = 8;              % order of nonlinearities

L = round(f1/log(f2/f1)*T_)/f1;
T = L*log(f2/f1); % this definitive sweep duration in theory makes Novak's SESS more robust to phase issues (synchronized)
t = (0:ceil(fs*T)-1)./fs;
x = sin(2*pi*f1*L*(exp(t/L)-1)); % sweep

Novak 使用带有幅度校正的常规反向扫描的优雅频域定义替代方案。尽管 Novak 的频率方法提供了更好的 SNR,但我已经对两者进行了类似的测试。

另一个变化是我模拟了一个“真实”系统,嗯,只有一个吉他放大器 VST 插件。所以我使用插件的输出到 SESS 进行反卷积阶段。

这是第一个和第三个内核

我不是 100% 确定,但内核看起来非常“右侧”,就像 Farina 2007 年的论文一样。内核的频率幅度与高增益吉他放大器 VST 一致(偶次谐波更强)。内核阶段是一团糟,像三角锯。当我用干吉他声音作为输入测试模型时,输出几乎没有改善常规(第一核)均衡匹配。

在 SESS(插件输入/输出)和模拟(干吉他信号)阶段,我都应用了 100hz-10Khz 范围内的陡峭带通。该插件配置为进行 x2 过采样 (384Khz) 以避免混叠伪影。

3个回答

非线性建模的一个潜在缺陷是使用不同的信号电平。扫描测试需要在足够高的信号电平下进行,以覆盖最大可能的实际输入电平,但不能高很多,因为这需要更多的内核才能获得相同的有效质量。通常,系统的真实世界信号大部分时间处于低于其峰值水平的水平,其中一阶线性内核占主导地位。

对我来说,你的内核看起来很好。我不知道看到高阶内核(图中的三阶)比一阶内核更突出是多么普遍。锯齿状相位来自于较大的初始延迟,这使得相位对频率具有陡峭的线性依赖性。包裹相π与包裹阶段相同π,你会看到包裹的相位,它给出了锯齿图案。如果您删除结果检查中的初始延迟,您应该能够更轻松地展开阶段以进行检查。

您将通过该技术建模的大多数系统都将具有右侧内核。这些系统是因果的,并且在它们接收到脉冲作为输入后不能长时间储存​​能量。那将需要一条延迟线。相反,大部分能量几乎立即作为初始峰值通过,剩余能量作为尾部释放。

我建议您使用您可以完全控制的系统进行测试,例如无记忆的非线性,它是N第一类第一切比雪夫多项式,每个N要生成的谐波,包括计数中的第 0 次和第 1 次谐波。那么由于算法/软件中的错误导致的任何相移都应该清晰可见。如果算法正常工作,每个谐波脉冲响应应该是延迟的 sinc,并且无记忆非线性多项式的系数应该被解析为缩放的类脉冲内核的幅度。

我在自己的实现中所做的是通过将时序编程到群延迟中并将幅度编程到幅度中来生成扫描及其在频域中的淡入和淡出,而不是使用直接时域方程进行扫描. 无论哪种方式都应该有效,并且会有自己的问题。频域方法在衰落附近给出幅度振荡。在频域中,很容易在逆滤波器中校正扫描的非白度。(我目前无法详细发布我的实现。)

如果有相位问题,我会尝试cos代替sin在时域扫描公式中,将扫描淡入淡出。淡入淡出将负责消除末端的瞬变。扫描正弦曲线的初始和最终阶段可以使扫描的值在开始和结束时都为零,但是对于瞬态减少不再需要淡入和淡出,因为淡入淡出在任何情况下都将值归零。

如果非线性是模拟的并且模数转换器 (ADC) 在奈奎斯特频率处具有抗混叠低通滤波器,我认为扫描一直到奈奎斯特频率没有问题. 这样,谐波脉冲响应和因此 Hammerstein 内核仅具有高达 Nyquist 频率的非混叠频率。如果系统与 Hammerstein 模型兼容,则在亚奈奎斯特频带中对非线性系统进行建模就足够了。只有实现必须小心不要引入别名。在任何情况下,您通常都希望线性内核的频率响应信息达到或至少接近奈奎斯特频率,这决定了扫描结束频率。

显然我错过了一些东西。最大的伪像来源之一是 SESS 的最后一个样本不为零。需要应用淡出。

在最重要的 Novak 的论文(2015 年)中,SESS 的定义发生了变化,去掉了方程的“-1”元素。可悲的是,这是我没有的付费报纸。我只从一篇后验论文(2016 年)中知道这一点,诺瓦克在其中指出:

L = T/log(f2/f1);
x = sin(2*pi*f1*L*(exp(t/L)));

引用诺瓦克的话:

“请注意,指数扫描正弦的定义不包含与通常定义相反的“-1”项 [Novak 2010]。”

“在 [Novak 2015] 中已经表明,在从原始定义中删除“-1”项后,同步扫描正弦变得适用于估计 HHFR,而无需对参数 f 1 进行任何校正或限制, f 2 , 和 T。”

这意味着没有扫描同步,内核不再进行相位校正。自由选择参数 f1、f2 和长度。我也猜想 fs 的自由度只要 f2 低于奈奎斯特频率并且没有衰减。很好,但这应该有诸如混合基频和谐波频率之类的主要问题。

可能这就是有关该主题的最新作者(Schmitz,2016)使用的内容。Schmitz 使用 ESS 开发了一个完整的 Matlab 工具箱 (OHKISS),直到几乎 Nyquist 频率,同时获得至少 10 个内核 (f2 = 22049, fs = 44100)。

可悲的是,OHKISS 代码有问题,而且具有正确数学解释的重要论文也不可用。它还使用了我无法移植到 Octave 的高级 GUI 功能。

非常感谢@OlliNiemitalo。我学到了很多东西,希望能尽快解决我的问题,谢谢你。

我知道输入级别依赖的问题,我看到你正在处理它。动态卷积,就像为 Acustica Audio 开发人员赚钱的那个。我离那个水平还很远。只是一些疑问和评论:

  • 高次谐波肯定有问题。我几乎可以肯定淡出存在问题,它会增强很多特定的谐波内核。我认为我的模拟听起来并不好,因为这种过强的谐波掩盖了正确或第一个谐波的影响。这可以解释为什么我得到太多的高潮。

  • 您对使用 f2 接近奈奎斯特频率的扫描的实现有何看法?诺瓦克的 2015 年似乎在使用它,其他人也是如此。对于经典的,我需要非常高的采样率来计算超过 4 个有限带宽的内核。

  • 似乎有一个非常理想的特性:ESS 的最终样本的幅度为零(零相位取决于 ESS 的选择)。第一个也是,但它似乎提供的工件要少得多。Schmitz 仅为此使用混合非线性整数程序求解器 (SCIP),优化 f1、f2 和给定范围的长度。

  • 在计算反幅度校正扫描时,您的频域设计是否类似于 Novak 的设计?乍一看,我觉得不像。

[更多研究后添加] 虽然我在测试阶段的问题还没有解决,但我在 Di Rosario 2011 年的论文中发现了 [Novak 2015] 中著名的 SESS 设计实现。这种方法确实在相位校正内核的方便点和 SESS 结束时都实现了零相位(零幅度)。这样可以在不使用淡出的情况下提供最低的高端频率纹波 (0.8dB)。无论 SESS 有什么开始阶段,淡入似乎都是强制性的,以避免出现大的低频波动。

当我有时间(叹气)时,我会尝试找出我的实现中的错误,这可能只是不同内核的权重。这可以解释 IR 在幅度和相位形状方面的良好外观(后者归功于 Olli 的解释),但在高次谐波中幅度过高。

我希望我花自己的时间和好心回答的人会帮助别人)