我正在试图找出一种方法来算法获得在千里马计算机代数系统中具有正弦项的函数的幅度和相位。这仅适用于稳态(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”项,因为它只是一个DC偏移。我在我的工程课程中被教导的方式需要大量的启发式和繁琐的方程式重新排列,以使它们以类似于上面的形式得到它们,其中答案很明显只是从它看起来。
有没有人知道一种通用的算法方法,假设它们存在,找到增益和相位延迟,因为我拥有计算机代数系统的全部功能(以及人们期望CAS拥有的标准功能)扔掉它?虽然我可能会在千里马中实现它,但我肯定会欣赏通过数学方面解释的通用答案。
编辑:我认为从我的例子中可以清楚地看出,我想用符号来表达答案。 w实际上应该是欧米茄,并代表输入的频率。我真正要问的是,是否有任何标准的数学运算可以产生增益和相位项而无需一堆启发式,手动方程式重新排列。
答案 0 :(得分:7)
你的意思是象征性还是数字式?
数字上你想要执行Fourier transform:
对函数进行采样至少是预期最大频率的两倍(如果您想要更精确的相位测量,则更高),并且至少是您的最大预期波长
执行傅里叶变换器(搜索FFT应该会出现很多例子 - 我的搜索表明最大值甚至可能有内置的fft函数)
这将为您提供功能的“频域”版本。您将拥有一系列复数值,其中幅度是该频率的幅度,角度是该频率分量的相位。在你的情况下,听起来你想要寻找具有峰值振幅的频率
答案 1 :(得分:1)
这可能是理想的,也可能不是理想的,但我假设您无法对生成波形的函数执行任何数学运算(或函数不可用) -
我会以明显小于周期的间隔对波进行采样。这可能很难 - 你需要确定波浪的周期大于采样间隔,但你不会希望它太小或者需要永远完成波浪的几个周期。也许你可以用一些最小的值开始采样,然后逐渐增加直到值以一定的可接受速率变化。
如果你这样做,那么你可以将波移动到X轴的中心(通过减去或加上平均值)并确定1)最小/最大值,它提供振幅和2)X截距,这提供了期间。
答案 2 :(得分:1)
拉普拉斯或傅立叶变换可能有所帮助;你既可以象征性地也可以数字地应用。但是我不确定你是否能够创建一种通用的算法方法 - 通常根据极点的不同有不同的情况。
答案 3 :(得分:0)
在考虑了一段时间后,我自己已经想到了这一点。我会在这里发布,因为它非常有趣。假设是:
在这些假设下,算法是: