理解周期信号及其频率组成
这篇文章,我们将讨论不同类型的周期信号,并介绍如何在 COMSOL® 软件中计算它们的频率组成。
简介
为了建立对周期信号仿真的理解,我们可以从一些简单的信号开始,并通过由快速傅里叶变换(FFT)计算出的频率组成来理解这些信号。本文所指的信号是指电气系统的激励信号,通常可以表示为随时间施加给系统的电流、电场或电势(电压)。
理解简单的信号
最简单的周期信号是一个常数,或者在任何时间段内都是周期性的直流(DC)信号:

这种直流信号在时间上没有变化,因此没有频率组成。不过,它确实携带频率为零的功率。如果绘制该信号功率幅值与频率的函数关系,我们将得到下图:

另一个最简单的信号是纯正弦波: , 它是一个周期为
的交流信号。

这个信号由单一频率组成,因此其功率与频率的关系可以表示为:

值得注意的是,上图显示的是复数值幅值的平方,因为:
因此,正弦波的傅里叶系数为 。 相较于复值系数,我们通常更感兴趣的是这些系数幅值的平方,
, 因为它与信号所携带的功率成正比。
考虑周期为 的信号的极值,它由无限个频率组成:
, 或者说,它是正弦波的所有奇次谐波之和。在频域中,其功率与频率的函数关系如下图所示:

如果在时域中绘制该信号的近似值,它将接近一个走向为正无穷大和负无穷大的脉冲,且每个脉冲的持续时间为零。

这种信号主要是从理论角度来描述的,因为没有任何物理设备可以产生这样的信号。所有真实的信号源都会有一些最大频率组成或有限的脉冲持续时间,我们将选择一个介于单一频率和无限频率这两个极端频率之间的信号,对其进行更详细的研究。
理解梯形脉冲波
我们要详细研究是梯形脉冲波信号,如下图所示:

该信号在一个周期内平均为零,也就是说它没有直流分量,即没有零频率组成。它有周期性的基频,最大频率取决于脉冲宽度和上升/下降时间。
还有一个与梯形脉冲信号类似的函数也值得讨论,即周期性梯形脉冲序列,如下图所示:

这个函数看起来非常相似。它是上一个信号的严格正向脉冲波,在一个周期内平均不为零,因此有一个直流分量。不过,如果要分析这两个信号对物理系统的影响,例如外加电流信号如何加热材料,我们可以运用一些物理知识:如果我们计算的是线性电气材料,那么这两个信号产生的热量将是相同的。线性材料假设不成立的情况包括:
- 半导体和半导体器件,如二极管
- 电化学行为,如表面腐蚀
- 由于雷击等原因造成的介电损耗
对于大多数其他情况,只需假定材料是线性,即它们具有近似恒定的电特性,至少在比信号周期长得多的时间范围内是如此。因此,将周期性梯形脉冲序列与上图中的梯形脉冲波进行比较,可以看出这两个函数具有相同的加热时间曲线。尽管真实施加的信号实际上可能与脉冲序列类似,即为严格意义上的正信号,但考虑一个绕零点振荡的信号可能会对我们的分析有所帮助。这样做的好处是直流分量为零,从而简化了分析。
最后,值得注意的是施加信号的上升和下降。在任何真实的系统中,都会出现一些平滑现象,也可能会出现一些振荡过冲和下冲现象,如下图所示:

斜率、平滑、过冲和下冲都会对信号中的频率组成产生影响,因此在模拟的第一步了解这一点非常重要。本示例将考虑一个没有任何下冲、过冲或平滑的函数,但建模流程是相同的,即使面对更复杂的函数也是如此。
使用 FFT 计算频率组成
对于任意周期函数,FFT 计算的步骤有三个:
- 定义一个周期内的周期函数
- 生成一个周期内的时域数据,其分辨率足以满足最高相关频率的要求
- FFT 计算
COMSOL Multiphysics® 中有许多 内置函数 可用于定义随时间变化的信号。 分段 函数 可用于定义不同区间的不同函数,并可使用任何 数学函数。其中几个内置函数还包括平滑选项。还可以使用 插值 函数 从外部文本文件读入时间序列数据。下图显示了一个未平滑的梯形脉冲波的设置示例。

周期为 1 µs 的无平滑梯形脉冲波。插值被设置为线性,输入变元和函数的单位已设定。
接下来,我们需要生成一个周期的时域数据,它必须具有足够的分辨率,以解析我们感兴趣的最高频率。最高频率应以基频的整数倍定义,因此 。为了满足奈奎斯特标准,每个周期必须至少有两个点:
。 如果我们定义
, 那么解析的频率最高可达
。这也满足了作为 FFT 步骤输入的时步数应为偶数的条件。
我们通常无法提前知道信号的最高频率是多少,因此首先要解析一个非常高的最高频率。通过信号的周期性,我们可以估算出最高频率,并用它来定义 FFT 研究中使用的一组参数。从非常高的分辨率开始,检查结果,然后用较高的最大频率重新计算,以节省计算成本。在本例中,开始时的最大频率为基频的一千倍。

设置参数为 FFT 研究做准备。根据所需的最大分辨频率,选择一个超过奈奎斯特标准的时步。
接下来,我们需要定义一个时间数据集,这可以通过引入一个在整个时间段内都有单位值的变量 u 来实现。下图展示了如何设置这样一个变量。

为等于 1 的变量设置全局方程。
接下来,设置一个研究,生成一个周期的结果数据集,其输出时间基于奈奎斯特标准,如下图所示。

设置一个将在时域中生成单位信号的瞬态研究。
这个研究的结果将生成一个数据集,其中存储的值 u = 1 在所有时间内都满足奈奎斯特标准的最高频率的时间步长。该信号与窗函数一起将被用于 时域到频域 FFT 研究步骤。将窗函数应用于信号,由于输入信号在所有时间内都是 1,因此输入窗函数意味着我们将对窗函数本身进行 FFT 计算。下图显示了如何设置这个研究,以使用之前的研究结果。请注意,我们可以设置多个研究,获取不同窗函数的 FFT 值。

使用包含 窗函数 特征的 时域频域 FFT 研究,对梯形脉冲波进行 FFT 计算。
运行这个研究后,u 的相关数据集将包含窗函数的 FFT 值,这将是一个复数值,对应于频率在: 内的傅里叶系数,其中包括信号的零频率或值为零的直流分量。
在理解频率组成方面,首先可以从与傅里叶系数的平方幅值成正比的信号的功率或能量的角度来思考。因此,我们绘制了代表信号功率的表达式 abs(u)^2。FFT 的结果与下图相似。

梯形脉冲波的功率与频率的关系绘图,从基频开始绘制。
从这幅对数图中,我们可以观察到一些现象。首先,在这个信号中,只有奇次谐波的贡献非常大。其次,100 到 1000 倍基频之间非常高的频率组成可以忽略不计。因此,我们有理由通过重新运行 FFT 来减少计算量,只考虑前 100 次谐波。这在下一步中将非常重要,届时我们将首先在较小的频率集上进行频域求解,重新构建实际系统的时域行为,然后使用逆 FFT 重建时域解的近似值。继续了解后续步骤,请参阅文章:使用逆快速傅里叶变换重新构建瞬态信号。
绘制出信号中功率组成的总分数也很有用,这涉及到对谐波数的系数幅值平方求和,可以通过 sum() 和 with() 算子的组合来实现,即:
sum(with(ind+1,abs(u)^2),ind,0,freq/f1)/sum(with(ind+1,abs(u)^2),ind,0,f_max/f1)
其中,with() 算子将引用当前解中的一个索引的结果,sum() 算子定义了一个从指定下限到上限的索引结果的总和。请注意,求和是从索引 0,即第 0 阶谐波或直流分量开始的,尽管我们知道在这种情况下其值为零。因此,上面的表达式将对傅里叶系数的平方进行求和,可用于绘制若干次谐波的总和,如下图为前 100 次谐波的总和。

多个谐波相加后的信号累积功率图。
进阶学习
您可以从本页面右侧边栏下载文中所提到的案例模型。如前所述,学习完此模型后,建议进一步阅读文章:使用逆快速傅里叶变换重新构建瞬态信号。
此外,下面链接中的 COMSOL Multiphysics 文档还提供了更多信息,包括可用于定义周期信号的函数类型以及如何定义这些函数:
请提交与此页面相关的反馈,或点击此处联系技术支持。
