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 ;  / 根据刚才的计算输入xy的关系式

>> 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()进行插值即可。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 幂律分布(Power Law Distribution)是一种常见的概率分布模型,它描述了许多实际现象的“长尾”特征,即少数超出预期范围的极端大值数据。 在MATLAB,可以使用最小二乘法进行幂律分布的拟合。拟合过程分为以下几个步骤: 1. 数据准备:将待拟合的数据准备好,并进行排序。 2. 定义幂律分布模型:定义幂律分布的函数表达式,一般为y = a * x^b,其a和b是待拟合的参数。 3. 初始参数估计:可以根据经验估计初始参数值。 4. 构建拟合函数:根据幂律分布函数表达式和参数,构建拟合函数。 5. 使用最小二乘法进行拟合:使用MATLAB的拟合函数进行最小二乘法拟合,如fit函数。 6. 拟合结果评估:评估拟合结果的准确性,比如计算残差平方和、确定系数等。 7. 可视化拟合结果:使用plot函数将原始数据和拟合曲线进行可视化展示。 需要注意的是,拟合过程可能会遇到一些问题,比如数据的范围较小、数据包含大量噪声等,这些都可能导致拟合结果不理想。因此,在进行幂律分布拟合时,需对数据进行预处理和适当的参数调整,以获得更准确的拟合结果。 综上所述,使用MATLAB进行幂律分布的拟合,需要进行数据准备、定义幂律分布模型、初始参数估计、构建拟合函数、最小二乘法拟合、拟合结果评估和结果可视化等步骤。掌握这些步骤,可以对幂律分布进行有效的拟合,并用于实际数据分析和建模。 ### 回答2: 在Matlab,可以使用powerlawfit命令来拟合幂律分布。使用该命令,需要提供一个包含从幂律分布抽样的数据的向量。 首先,需要确保已经安装了Matlab统计工具箱。然后,使用如下代码拟合幂律分布: ```matlab % 定义数据 data = [1.2, 2.5, 3.8, 4.3, 6.0, 9.1, 10.5, 12.7, 14.9]; % 拟合幂律分布 fit = powerlawfit(data); % 输出拟合结果 disp(fit); ``` 在上述代码,data是一个包含从幂律分布抽取的数据的向量。可以根据实际情况提供自己的数据。 通过powerlawfit命令拟合幂律分布后,可以获得一个结构体fit,其包含了拟合的结果。可以通过disp函数输出fit的结果。 需要注意的是,拟合幂律分布时,需要根据实际问题选择合适的数据,并根据数据的分布特点进行调整。 ### 回答3: 幂律分布是一种常见的概率分布模型,常用于描述非正态分布的数据。在matlab,可以通过powerlawfit函数来拟合幂律分布。 首先,将需要拟合的数据存储在一个一维向量或矩阵。然后,使用powerlawfit函数进行拟合。该函数的输入参数包括数据和拟合的范围,可以根据数据的特点进行调整。拟合的结果会返回幂律分布的拟合参数,如幂律指数和比例系数。 示例代码如下: ```matlab % 原始数据 data = [1, 2, 3, 4, 5]; % 幂律拟合 [alpha, xmin] = powerlawfit(data); % 显示拟合结果 disp('幂律指数为:'); disp(alpha); disp('最小概率阈值(分布的最小值)为:'); disp(xmin); ``` 上述代码,我们首先定义了原始数据data,然后调用powerlawfit函数进行幂律拟合。函数返回的alpha即为幂律指数,xmin为分布的最小值。最后,通过disp函数输出拟合结果。 通过这种方式,我们可以方便地使用matlab来拟合幂律分布,从而更好地理解和分析非正态分布的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值