我试图找出一种方法来通过算法获得在 Maxima 计算机代数系统中具有正弦项的函数的幅度和相位。这仅适用于稳态(因为 t -> 无穷大和 transient 衰减)。例如,一个微不足道的案例是:

f(t) = 1 / w * sin(w * t + theta) + exp(-a * t) + 8

在这种情况下,增益为 1/w,相位偏移为 theta,我们将忽略 transient 项 exp(-a * t),因为我们只关心稳态增益和相位延迟,而 exp(- a * t) -> 0 作为 t -> 无穷大。我们也会忽略“+ 8”项,因为它只是一个 DC 偏移。在我的工程类(class)中,我被教导这样做的方式需要大量的启发式方法和繁琐的方程式重新排列,以使它们具有与上述类似的形式,其中的答案很明显。

假设我拥有计算机代数系统的全部功能(以及人们期望 CAS 具有的标准功能),有没有人知道一种通用的算法方法来查找增益和相位延迟,假设它们存在的话?尽管我可能会在 Maxima 中实现它,但我当然会很感激仅用数学解释的通用答案。

编辑: 我认为从我的例子中可以清楚地看出,我想要象征性的答案,就 w 而言。 w 实际上应该是 omega,表示输入的频率。我真正要问的是是否有任何标准的数学运算可以产生增益和相位项,而无需大量启发式手动方程重新排列。

最佳答案

你的意思是象征性的还是数字的?

从数字上讲,您想要执行 Fourier transform :

  • 对函数进行至少两倍于预期最大频率的采样(如果您想要更精确的相位测量,则甚至更高)并且至少与您的最大预期波长一样长
  • 执行傅立叶变换(搜索 FFT 应该会出现很多示例 - 我的搜索表明最大值甚至可能具有内置的 fft 函数)
  • 这将为您提供函数的“频域”版本。您将拥有一系列复数值,其中幅度是该频率的幅度,角度是该频率分量的相位。在您的情况下,听起来您想寻找具有峰值幅度
  • 的频率

    关于通过算法获得正弦波的幅度和相位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1449290/

    10-09 02:37