使用逆快速傅里叶变换(IFFT)重建瞬态信号
本文将讨论如何使用 COMSOL Multiphysics® 软件中的逆快速傅里叶变换(IFFT)功能,并演示如何重建电气系统的时域响应。
背景介绍
模拟线性系统对随时间变化的输入信号的响应时,可以在时域或频域中建模,并使用快速傅里里叶变换(FFT)和 IFFT 在二者之间进行转换。给定一个物理系统和一个时域输入信号,就可以计算出系统随时间变化的响应。或者,也可以将时间信号的 FFT 作为系统频域模型的输入,通过 IFFT 可以将其转换回时域。本文将介绍如何使用 IFFT 功能。
从频域转换到时域
已知一个已经通过 FFT 从时域转换到频域的信号,我们将使用 IFFT 将其转换回时域。Starting with the example developed in a previous article, where an FFT of a trapezoidal pulse is taken,下面的屏幕截图显示了将频域数据转换回时域的 频域到时域 FFT 研究步骤。

频域到时域 FFT 研究步骤的设置。
IFFT 的结果如下所示,放大其中一部分可查看吉布斯现象。

对梯形脉冲的 FFT 进行 IFFT 的结果。
查看 IFFT 如何根据所考虑的谐波数来重构信号也很有趣。通过观察 FFT 可知,只有奇次谐波携带重要信息,因此我们希望通过只考虑 IFFT 中最低的几个谐波来看下 IFFT 是什么样子的。这可以通过 窗函数 来实现,该功能可用于对频域数据进行操作,其中频率是内置变量,freq。下面的截图显示使用了一个值为 0 或 1 的布尔表达式 (freq<N*f1),它可以过滤掉所有大于 N*f1 的信号,其中 N 是一个正整数参数,通过 参数扫描 特征进行扫描。

频域到时域 FFT 研究步骤的截图,使用了窗函数。参数扫描 用于扫描重建中使用的谐波次数。
下图的结果显示了引入不断增加的谐波数将如何改善原始信号的重建。

对梯形脉冲的 FFT 进行 IFFT 的结果,考虑的谐波数不断增加。
现在,我们已经看到了如何通过 FFT 和 IFFT 将信号从时域转换到频域,然后再转换回来。接下来,我们将了解如何将该信号的 FFT 与系统模型相结合,通过 IFFT 计算出模型的瞬态响应。
使用 IFFT 重构系统的瞬态响应
考虑一个由插入金属空腔中的同轴探头组成的系统,空腔充满了有损电介质,其相对介电常数为 50,电导率为 30 mS/m。同轴内和周围的绝缘体相对介电常数为 1.75,电导率为 1-e12 S/m。同轴的外导体与腔壁电连接,内导体由随时间变化的电流源馈入。由于磁场可以忽略不计,因此可以使用瞬态 电流 接口求解这类模型。

金属腔内的同轴探针模型,腔内填充有损电介质材料样品。
在对前面所示的梯形脉冲的一个周期进行求解时,我们可以绘制出终端上的电压和电流以及样品内部的损耗,这个响应结果显示了电阻电容系统的典型行为。

计算出的随时间变化的终端电压(蓝色)和施加的电流(绿色)。

计算出的样品材料随时间变化的损耗。
我们想通过在频域中求解模型,然后使用之前计算的激励函数的 FFT 来重建这些结果。首先在一组谐波的频域(使用单位激励)上求解模型。在本例中,我们求解了前 100 次谐波。然后,通过 频域到时域 FFT 研究中的 窗函数 将模型的频域响应与输入信号的 FFT 结合起来,如下图所示。 withsol() 算子 用于引用采用激励函数计算的 FFT 结果。

使用 频域到时域 FFT 研究获取输入研究结果和从 时域到频域 FFT 研究中计算出的 FFT。

通过时域计算的末端电压(灰色线)与通过频域和 IFFT 计算的末端电压(蓝色虚线)的比较。

通过时域计算的损耗(灰色线)与通过频域和 IFFT 计算的损耗(红色虚线)的比较。
结果表明,瞬态解与通过 IFFT(使用前 100 次谐波)计算得出的解几乎一致。
此外,还可以用较小的非均匀间隔谐波子集来重建信号。要想知道为什么可以这样做,我们可以看看前 20 次谐波的傅里里叶系数大小。观察发现,所有偶次谐波都可以忽略不计,第 5 次和第 15 次谐波也可以忽略不计。因此,在一个小得多的且非均匀的频率范围内求解频域模型是合理的。

梯形脉冲前 20 次谐波的傅里里叶系数大小,只有部分谐波是重要的。
为了求解模型,我们需要对较少的谐波数进行第二次 频域 研究,这样所需的时间会少得多。在 从频域到时域的 FFT 研究中,我们必须使用 离散傅里里叶变换 缩放选项,而不是连续缩放选项。结果表明,样本中的终端电压和损耗仍然非常吻合。

使用 频域到时域 FFT 研究一组非均匀频域结果需要离散傅里里叶变换缩放。

通过时域计算的终端电压(灰色)与通过 IFFT 计算的仅有少量谐波的终端电压(蓝色)的比较。

通过时域计算的损耗(灰色)与通过 IFFT 计算的只有几个谐波的损耗(红色)的比较。
提取时间积分量
提取每个脉冲沉积到样品中的总能量也很有用。使用时间积分算子
timeint(0, T1/2, intopSample(ec.Qh), 'nointerp')
可直接从 瞬态 研究结果中提取所需的数据。这个表达式只对 1/2 周期进行了无插值积分,因为我们已经知道信号会在后半个周期重复出现,所以对整个周期进行积分是前者的两倍。
通过 withsol() 算子将频域解和输入信号的 FFT 结合起来,可以提取出相同的信息。对于 N 次谐波,样本材料内部损耗的能量可通过以下表达式计算得出
withsol('sol2',0.5*intopSample(ec.Qh)*T1,setind(freq,N))*withsol('sol4',abs(comp1.u)^2,setind(freq,N+1))
参数 N 为正整数。该表达式中的第一个 withsol 算子使用频域结果,只使用 1/2 脉冲损耗, setind 参数将频率索引设置为 N 次谐波。第二个 withsol 算子使用 FFT 结果,由于 FFT 数据集包含直流解,因此 setind 参数为 N+1 个解。
通过引入另一个 全局常微分方程和微分代数方程 接口,可以绘制出这些数据。该接口存储了上述计算的结果,并可在对若干次谐波进行扫描的研究中求解。结果显示,在这种情况下,超过 75% 的能量损耗在 1 次谐波中;超过 95% 的能量损耗在 1 次和 3 次谐波中;超过 99% 的能量损耗在 1 次 、3 次 、7 次 和 9 次谐波 中。这些系统观测结果在处理电磁加热模型时非常有用。

对前 20 次谐波求和的系统总损耗能量的比例。
扩展学习
您可以下载本页面随附的模型文件,查看本文介绍的示例。
请提交与此页面相关的反馈,或点击此处联系技术支持。
