我需要拟合图像中可以看到的曲线,该曲线来自大量蒙特卡洛模拟。我还上传了数据以适合txt file。 使用matlab的非线性拟合函数
我tryied与该类型的一个函数来拟合曲线:
斧EXP(B(X^k))的
与k<1
。 结果与实验点类似,但仍远离我需要的拟合函数。
我以为在不同的方程中分裂了整个范围,但我还没有达成解决方案。即第一部分是直线,第三部分是指数。但是高峰呢?
任何想法?
我需要拟合图像中可以看到的曲线,该曲线来自大量蒙特卡洛模拟。我还上传了数据以适合txt file。 使用matlab的非线性拟合函数
我tryied与该类型的一个函数来拟合曲线:
斧EXP(B(X^k))的
与k<1
。 结果与实验点类似,但仍远离我需要的拟合函数。
我以为在不同的方程中分裂了整个范围,但我还没有达成解决方案。即第一部分是直线,第三部分是指数。但是高峰呢?
任何想法?
8度的多项式拟合:
close all; clear all;
fid = fopen('output_red.txt','r');
Z = textscan(fid, '%f %f %f %f %f');
fclose(fid);
X = log(Z{1});
Y = log(Z{2});
p = polyfit(X, Y, 8);
Y2 = polyval(p, X);
plot(exp(X), exp(Y));
hold on
plot(exp(X), exp(Y2), 'r')
legend('Original data','Fitted curve')
print('-dpng','fitted.png')
p
包含多项式系数1.2737e-05 -9.1262e-04 2.7838e-02 -4.7160e-01 4.8482e+00 -3.0958e+01 1.1990e+02 -2.5649e+02 2.3480e+02
。使用更高程度的多项式将导致更好的精度。
非常感谢您的帮助!但是拟合函数方程呢?我怎样才能得到多项式的系数? – TheInterestedOne
您应该自己运行脚本来计算最小二乘方误差并决定程度。 – divanov
谢谢你的帮助。它很好用 – TheInterestedOne
我猜你的问题是,不仅要平滑曲线......如果是这样,没有什么比为指向的@divanov精心挑选的多项式更好。所以,我无话可说。
然而,据我所知,你的数据描述了一个经验分布(你告诉我们它来自蒙特卡洛模拟),如果你真的想找到一个描述你的数据的函数,你可以考虑估计一个知名度分布重尾。
其中有一些已经在matlab工具箱中煮熟了。我建议你尝试一下,例如Weibull distribution,但你最终可能会尝试其他种类。
谢谢我会检查 – TheInterestedOne
你有[曲线拟合工具箱](http://www.mathworks.com/products/curvefitting/)吗?您还可以使用更复杂的方法,如正弦和余弦的和。 – Schorsch
我使用EzyFit,因为它是免费的 – TheInterestedOne
对不起...要绘制的数据只是第一个(x)和第二个(y)列。然后出现差异,PRSD%和MC的数量以获得期望的误差。这个txt文件来自Fortran90脚本。 – TheInterestedOne