【问题标题】:Algorithmically get Amplitude and Phase of Sine wave?算法获得正弦波的幅度和相位?
【发布时间】:2009-09-19 19:23:13
【问题描述】:

我正在尝试找出一种方法来通过算法获取在 Maxima 计算机代数系统中具有正弦项的函数的幅度和相位。这仅适用于稳态(因为 t -> infinity 和瞬态衰减)。例如,一个简单的案例是:

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

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

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

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

【问题讨论】:

  • 由于这是一个相当 dsp-niche 的问题,您可能想在这里问kvraudio.com/forum/viewforum.php?f=33,然后自己回答这个问题,并为未来的 SO 读者提供答案。

标签: algorithm math maxima computer-algebra-systems


【解决方案1】:

你的意思是符号还是数字?

在数值上你想执行Fourier transform

  • 至少以预期最大频率的两倍(如果您想要更精确地测量相位,甚至更高)以及至少与最大预期波长一样长的时间对函数进行采样

  • 执行傅立叶变换(搜索 FFT 应该会找到很多示例 - 我的搜索表明 maxima 甚至可能具有内置 fft 函数)

  • 这将为您提供函数的“频域”版本。您将有一系列复数值,其中幅度是该频率的幅度,角度是该频率分量的相位。在您的情况下,听起来您想寻找具有峰值幅度的频率

【讨论】:

    【解决方案2】:

    拉普拉斯变换或傅里叶变换都可能有所帮助;您可以以符号方式和数字方式应用。但我不确定您是否能够创建通用算法方法 - 通常情况不同,具体取决于极点的位置。

    【讨论】:

      【解决方案3】:

      这可能是理想的,也可能不是理想的,但我假设您无法对生成波形的函数执行任何数学运算(或者该函数不可用)-

      我会以明显小于周期的间隔对波形进行采样。这可能很困难 - 您需要确定波的周期大于采样间隔,但您不希望它太小,否则需要永远完成波的几个周期。也许您可以从某个最小值开始采样,然后逐步增加直到值以可接受的速率变化。

      如果您这样做,那么您可以将波移动到 X 轴的中心(通过减去或添加平均值)并确定 1) 最小值/最大值,它提供幅度和 2) X 截距,它提供了期间。

      【讨论】:

      • 查看对原始问题的编辑。这个想法是我有生成函数,但是以某种笨拙的形式,手动转换为任何答案显而易见的东西可能非常乏味
      【解决方案4】:

      在考虑了一段时间后,我自己想通了。我会把它贴在这里,因为它很有趣。假设是:

      1. 信号已经存在了无限时间,所以一切都处于稳定状态。
      2. 您的表达中只有一个频率。这很容易通过检查来检查,即使它是某种非常复杂的形式。例如,您不能有 sin(w1 * t) + sin(w2 * t) 否则这将不起作用。
      3. 您知道频率和时间变量的名称。
      4. 你有一个不错的计算机代数系统和所有的标准函数。

      在这些假设下,算法是:

      1. 进行拉普拉斯变换。在实践中,这是微不足道的,因为大多数时候当你遇到这样的问题时,你的答案最初是在拉普拉斯域中,你最终会转换回时域来获得正弦波的表达式。即使没有,一个像样的 CAS 也已经具备成熟的拉普拉斯变换函数。
      2. 除以 sin(w*t) 的拉普拉斯变换。 (假设您使用 w 表示频率,使用 t 表示时间)。这为您提供了传递函数,即输入正弦波乘以的拉普拉斯域常数。
      3. 由于 t -> 无穷大,即对于存在无限时间的信号,拉普拉斯变量 s 等价于 iw,因此只需将 iw 替换为 s,即可得到传递函数在频域中,实际上是传递函数的傅里叶变换。
      4. 对于频率为 w 的正弦波,增益是传递函数的复绝对值。 (复数绝对值是复平面上某个复数到原点的距离,sqrt(realpart(my_number)^2 + imagpart(my_number)^2)。
      5. 相位偏移只是反正切(虚部(transferFunction)/实部(transferFunction))。

      【讨论】:

        猜你喜欢
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 2016-07-10
        • 2017-04-10
        相关资源
        最近更新 更多