我正在编写一个程序,它需要拟合大量的余弦波,以便确定函数的一个参数。我使用的方程是y= y_0 +Acos((4*pi*L)Acos+ pi),其中L是我试图从最佳拟合线获得的值。
我知道对于每一组数据都可以手动正确地完成此操作,但自动化此过程的最佳方法是什么?我目前正在从文本文件中读取数据,并运行一个循环,使初始参数发生变化,直到我有一个具有与数据相似幅度的参数值数组,然后我检查中心峰和两个结束峰上的点之间的百分比差异,试图挑选出最好的一个。它总是选择比我手工拟合时得到的值更低的值(几乎恰好只有一个阶段)。那么,有没有办法改进这种方法,或者是另一种更有效的方法?
编辑:我的LabVIEW版本有一个cos拟合VI,这就是我正在使用的,问题是当我试图通过使用循环改变初始参数来自动拟合时,我不知道如何让程序选择与人类相同的最佳拟合线。
发布于 2011-07-13 07:45:19
为什么不使用快速傅立叶变换呢?这应该比拟合余弦快得多。在复数的结果向量中,查找总数中的最大峰值。您将获得频率(在FFT结果向量中的位置)、振幅和相位。
发布于 2011-07-13 23:01:33
您可以通过计算拟合曲线与数据之间的差值来评估拟合的优劣。在“高级曲线拟合”调色板中,VI可以做到这一点。然后你所要做的就是挑选最合适的。
https://stackoverflow.com/questions/6670231
复制相似问题