2009-09-19 151 views
4

我试图找出一种方法来算法得到在Maxima计算机代数系统中具有正弦项的函数的幅度和相位。这仅适用于稳态(如t→无穷大和瞬态衰减)。例如,一个简单的情况下将是:算法获得正弦波的振幅和相位?

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

在这种情况下,增益是1/w的,相位偏移将是theta和我们将忽略瞬态项EXP(-a * T),因为我们只关心稳态增益和相位延迟,exp(-a * t) - > 0表示为t - >无穷大。我们也会忽略“+8”这个词,因为它只是一个直流偏移。我在工程学课程中教过的方法需要大量的启发式方法和繁琐的方程式重新排列,才能使它们形成类似于上述的形式,其中的答案显而易见。

有没有人知道一个普遍的算法找到增益和相位延迟假设他们存在,鉴于我有一个计算机代数系统的全部力量(和人们期望CAS有的标准功能)扔在它?尽管我可能会在Maxima中实现它,但我肯定会赞赏仅仅用数学解释的一般答案。

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

+1

由于这是一个相当麻烦的问题,您可以在这里查询http://www.kvraudio.com/forum/viewforum.php?f=33和然后回答这个问题自己与未来的SO读者的回应 – Nosredna 2009-09-19 19:55:26

回答

7

您的意思是符号或数字?

数控你想要执行Fourier transform

  • 样品用于以至少两倍的预期最大频率(即使想要的相位更精确的测量更高)的功能以及用于只要至少你的最大期望波长

  • 进行傅立叶transfomr(搜索FFT应调高大量的例子 - 我的搜索建议,最大值甚至有可能内置FFT功能)

  • 这会给你一个你的函数的“频域”版本。您将得到一系列复数值,其中幅度是该频率的幅度,角度是该频率分量的相位。在你的情况下,它听起来像你要寻找的frequeny有峰值幅度

1

这可能会或可能不会很理想,但我假设你不能在函数生成波形进行任何数学(或功能不可用) -

我会以显着小于期间的间隔对波形进行采样。这可能很困难 - 您需要确定地知道波浪的peirod大于采样间隔,但您不希望它太小,或者需要永久完成波浪的几个周期。也许你可以用一些最小值开始采样,然后逐渐增加,直到值以某个可接受的速率变化。如果你这样做,那么你可以把波移动到以X轴为中心(通过减去或增加平均值)并且确定1)提供振幅的最小/最大值和2)X轴截距,它提供了期限。

+0

请参阅编辑原始问题。这个想法是,我有生成函数,但在一些笨拙的形式,可能是非常繁琐的手动转换为任何答案是明显 – dsimcha 2009-09-19 20:08:05

1

拉普拉斯或傅立叶变换可能有帮助;您可以象征性地或以数字方式应用。但我不确定你将能够创建一个通用的算法 - 通常根据极点的不同情况有不同的情况。

0

经过一段时间的思考之后,我已经明白了这一点。我会在这里发布它,因为它非常有趣。假设是:

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

的算法,在这些假设下,就是:

  1. 取拉普拉斯变换。在实践中,这是微不足道的,因为大多数时候遇到像这样的问题时,您的答案最初是在拉普拉斯域中,并且最终会转换回时域以使您的表达式具有正弦波。即使不这样,一个体面的CAS也将具有成熟的拉普拉斯变换函数。
  2. 除以sin(w * t)的拉普拉斯变换。 (假设你使用w代表频率,t代表时间)。这给出了传递函数,即输入正弦波乘以的拉普拉斯域常数。
  3. 由于t->无穷大,即对于已经存在无限时间的信号,拉普拉斯变量s等于i,所以通过简单地用s代替i,您可以得到频域中的传递函数,实际上是传递函数的傅里叶变换。
  4. 对于频率为w的正弦波,增益是传递函数的复数绝对值。 (复数绝对值是一些复数与复平面原点之间的距离,sqrt(realpart(my_number)^ 2 + imagpart(my_number)^ 2)
  5. 相位偏移只是arctan(imaginarypart(transferFunction )/ realpart(transferFunction))。