算法得到正弦波的幅度和相位?

dsi*_*cha 4 algorithm math computer-algebra-systems maxima

我试图找出一种方法来算法获得在千里马计算机代数系统中具有正弦项的函数的幅度和相位.这仅适用于稳态(t - >无穷大和瞬态衰减).例如,一个简单的案例是:

f(t) = 1 / w * sin(w * t + theta) + exp(-a * t) + 8
Run Code Online (Sandbox Code Playgroud)

在这种情况下,增益为1/w,相位偏移为θ,我们将忽略瞬态项exp(-a*t),因为我们只关心稳态增益和相位延迟,以及exp( - a*t) - > 0为t - >无穷大.我们也会忽略"+ 8"项,因为它只是一个DC偏移.我在我的工程课程中被教导的方式需要大量的启发式和繁琐的方程式重新排列,以使它们以类似于上面的形式得到它们,其中答案很明显只是从它看起来.

有没有人知道一种通用的算法方法,假设它们存在,找到增益和相位延迟,因为我拥有计算机代数系统的全部功能(以及人们期望CAS拥有的标准功能)抛出它?虽然我可能会在Maxima中实现它,但我肯定会欣赏通过数学方面解释的通用答案.

编辑: 我认为从我的例子中可以清楚地看出,我想用符号来表达答案.w实际上应该是欧米茄,并代表输入的频率.我真正想问的是,是否有任何标准的数学运算可以产生增益和相位项而无需一堆启发式,手动方程式重新排列.

Lau*_*ves 7

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

在数字上你想要执行傅里叶变换:

  • 将该函数采样至少两倍于预期的最大频率(如果您想要更精确的相位测量,则更高),并且至少是您的最大预期波长

  • 执行傅里叶变换器(搜索FFT应该会出现很多例子 - 我的搜索表明最大值甚至可能有内置的fft函数)

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