怎样用matlab画幂律分布图

怎样用matlab画幂律分布图,第1张

在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.07005.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’)

这是网络图中各节点的度及度的分布曲线的matlab代码: function [DeD,aver_DeD]=Degree_Distribution(A) %% 求网络图中各节点的度及度的分布曲渣含谈线 %% 求解算法:求解每个节点老销的度,再按发生频率即为概率如碰,求P(k) %A————————网络图的邻接矩阵 %DeD


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12355617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存