Matlab拟合曲线之幂律分布

Matlab拟合曲线之幂律分布
收集的问题:
1. 如何⽤matlab来拟合幂律分布,怎样将拟合值和实际值进⾏对⽐,放在⼀个图中,⼜如何检验实际数据是否符合拟合函数
2. 如果不符合,如何来直接判断实际数据服从什么样的函数分布呢
在MATLAB⾥,对数据进⾏拟合,在双对数坐标下,看数据是否符合幂律分布,求出幂指数,并绘出图形。-In MATLAB, the pairs of data fitting, in double logarithmic coordinates to see whether the data meet the power-law distribution, find the power index, and draw the graph.以傅雷书信为例:(平移237个单位时间)
“>>”后是输⼊内容,⾏开头不含“>>”的是MATLAB运⾏的结果,“/”后是注释部分
>> x=[ ];  / 输⼊修正的书信间隔时间
>> y=[ ];  / 输⼊累积概率
>> loglog(x,y,'ko')  / 画出双对数下坐标图(k表⽰⿊⾊,o表⽰圆圈)
>> hold on  / 保留刚才所画图表,以便继续在此图画出拟合直线
>>  a=polyfit(log(x),log(y),1)  / 求拟合直线的参数(⼀次项和常数项)
a =
-1.0700    5.9525
>> b=2.71828^5.9525  /  常数项转化
b =
384.7124
>> x=100:100000;  /  根据上⾯所作的图指定x的取值范围
>> y=b*x.^ -1.0700 ;  / 根据刚才的计算输⼊x和y的关系式
>> plot(x,y,'k')  / 在双对数坐标下画出拟合直线
上⾯程序即可得到我们需要的图形,图形的再编辑可以在Figure窗⼝下的Edit-Figure Properties⾥修改(颜⾊、线条粗细、坐标轴命名等)。
但是得注意的是,⽤这个plotfit函数不太能够⽤来拟合很复杂的函数,⽽只是⽤来拟合线性的、⼆维之类的,⽽⽤它来拟合幂律分布的曲线时,只能考虑先截取⼀部分的点,然后⽤这个函数去拟合。
MATLAB软件提供了基本的曲线拟合函数的命令.
多项式函数拟合:P=polyfit(x,y,n)
其中n表⽰多项式的最⾼阶数,x,y为将要拟合的数据,它是⽤数组的⽅式输⼊.输出参数P为拟合多项式
P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).的系数
多项式在x处的值y可⽤下⾯程序计算.
y=polyval(P,x,m)
线性:m=1, ⼆次:m=2, …
polyfit的输出是⼀个多项式系数的⾏向量。为了计算在xi数据点的多项式值,调⽤MATLAB的函数polyval。
例:
x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
A=polyfit(x,y,2)
Z=polyval(A,x);拟合直线
Plot(x,y,’r*’,x,z,’b’)
polyfit不能保证你每次都能得到最优解,math的答案是使⽤数值计算。
个⼈认为,对于这种⾮线性的曲线,尽量不要使⽤ployfit, ployfit多项式抑合适合线性⽅程!!
⽤polyfit()函数去拟合这么复杂的曲线不太合适,polyfit()函数对于数据遵循多项式分布是⽐较好的,⼀般来说,利⽤polyfit()函数拟合的阶数不要超过5阶。
如果是不需要得到拟合曲线的函数,只是把这些点利⽤⼀些光滑曲线连接,建议使⽤三次样条函数spline()进⾏插值即可。

本文发布于:2024-09-23 05:30:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/359945.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:拟合   函数   数据   曲线   分布   图形
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议