部分正弦数据拟合代码C

部分正弦数据拟合代码C,c,curve-fitting,trigonometry,C,Curve Fitting,Trigonometry,我有8个数据点,形成部分正弦波的峰值。我试图拟合这些方程,以便找到真正最大位置的点(最有可能位于数据点之间)。编码将使用C。是否有人了解算法或理想情况下编码样本的信息?如果样本值形成“驼峰”,即先增加后减少样本,您可以尝试将样本值视为“权重”并计算“重心”: float cog=0f; 对于(i=0;i,如果样本值形成“驼峰”,即先增加后减少样本,则可以尝试将样本值视为“权重”,并计算“重心”: float cog=0f; 对于(i=0;i,如果样本值形成“驼峰”,即先增加后减少样本,则可以尝试

我有8个数据点,形成部分正弦波的峰值。我试图拟合这些方程,以便找到真正最大位置的点(最有可能位于数据点之间)。编码将使用C。是否有人了解算法或理想情况下编码样本的信息?

如果样本值形成“驼峰”,即先增加后减少样本,您可以尝试将样本值视为“权重”并计算“重心”:

float cog=0f;

对于(i=0;i,如果样本值形成“驼峰”,即先增加后减少样本,则可以尝试将样本值视为“权重”,并计算“重心”:

float cog=0f;

对于(i=0;i,如果样本值形成“驼峰”,即先增加后减少样本,则可以尝试将样本值视为“权重”,并计算“重心”:

float cog=0f;

对于(i=0;i,如果样本值形成“驼峰”,即先增加后减少样本,则可以尝试将样本值视为“权重”,并计算“重心”:

float cog=0f;

对于(i=0;i,由于数据点都接近最大值,波
y=a*sin(B*x+C)+D
可以近似为抛物线,非常类似于cos(x)=(1.0-x*x/2!+…)的前两项

因此,找到8个数据点的最佳拟合抛物线,并计算最大值。


有很多谷歌的例子。

由于数据点都接近最大值,波
y=a*sin(B*x+C)+D
可以近似为抛物线,就像cos(x)=(1.0-x*x/2!+…)的前两项一样

因此,找到8个数据点的最佳拟合抛物线,并计算最大值。


有很多谷歌的例子。

由于数据点都接近最大值,波
y=a*sin(B*x+C)+D
可以近似为抛物线,就像cos(x)=(1.0-x*x/2!+…)的前两项一样

因此,找到8个数据点的最佳拟合抛物线,并计算最大值。


有很多谷歌的例子。

由于数据点都接近最大值,波
y=a*sin(B*x+C)+D
可以近似为抛物线,就像cos(x)=(1.0-x*x/2!+…)的前两项一样

因此,找到8个数据点的最佳拟合抛物线,并计算最大值。



谷歌有很多例子。

添加数据和约束(例如,所有数据都在90度的5度范围内)会有所帮助。一般形式是
y=A*sin(B*x+C)+D
。了解A、B、C、D的限制会有所帮助。数据点在x方向上的间距是否相等?是的-在x轴上的间距相等添加数据和约束(例如,所有数据都在90度的5度范围内)会有帮助。一般形式是
y=A*sin(B*x+C)+D
。了解A、B、C、D的限制有帮助。数据点在x方向上的间隔是否相等?是-在x轴上的间隔相等添加数据和约束(例如,所有数据都在90度的5度范围内)会有帮助。一般形式是
y=A*sin(B*x+C)+D
。了解A、B、C、D的限制有帮助。数据点在x方向上的间距是否相等?是-在x轴上的间距相等添加数据和约束(例如,所有数据都在90度的5度范围内)会有帮助。一般形式是
y=A*sin(B*x+C)+D
。了解A、B、C、D的限制会有所帮助。数据点在x方向上是否等距分布?是的-在x轴上等距分布如上所述,它不起作用,但我喜欢这个想法,并且会随着它一起进行,因为如果几个峰值接近,测试就不起作用。也许是我的“开场白”还不够清楚,但提供的代码估计了单个“驼峰”或“峰值”的子样本位置,给定分布在该峰值周围的一组样本。查找每个峰值,并围绕其选择一个样本集被认为是另外一种方法。尽管上面进行了编码,但它不起作用,但我喜欢这个想法,并将继续使用它,因为如果几个峰值接近,则测试不起作用可能是我的“开场白”还不够清楚,但提供的代码估计了单个“驼峰”或“峰值”的子样本位置,给定分布在该峰值周围的一组样本。查找每个峰值,并围绕其选择一个样本集被认为是另外一种方法。尽管上面进行了编码,但它不起作用,但我喜欢这个想法,并将继续使用它,因为如果几个峰值接近,则测试不起作用可能是我的“开场白”还不够清楚,但提供的代码估计了单个“驼峰”或“峰值”的子样本位置,给定分布在该峰值周围的一组样本。查找每个峰值,并围绕其选择一个样本集被认为是另外一种方法。尽管上面进行了编码,但它不起作用,但我喜欢这个想法,并将继续使用它,因为如果几个峰值接近,则测试不起作用可能是我的“开场白”还不够清楚,但提供的代码估计了单个“峰”或“峰”的子样本位置,给出了分布在该峰周围的一组样本。假设在其他地方找到每个峰并选择围绕该峰的样本集
float cog = 0f;
for (i=0; i<num_samples; ii+) {
    cog += i * samples[i];
}
cog /= num_samples;