Matlab 拟合幂律:“引用;由模型函数计算的NaN“;

Matlab 拟合幂律:“引用;由模型函数计算的NaN“;,matlab,model-fitting,Matlab,Model Fitting,我尝试用matlab拟合幂律函数(y=ax^b) 我只是简单地用 拟合(x,y,'power1') 我得到这个错误: 使用拟合>iFit时出错(第415行) NaN由模型函数计算,拟合无法继续。 尝试使用或收紧系数的上限和下限。 配合错误(第109行) [fitobj,goodness,output,convmsg]=iFit(xdatain,ydatain,fittypeobj WHYYYY!?在我的x和y矩阵中没有0,我认为没有任何东西会返回NaN值,我可以毫无问题地计算逆关系拟合(y,x

我尝试用matlab拟合幂律函数(y=ax^b)

我只是简单地用

拟合(x,y,'power1')

我得到这个错误:

使用拟合>iFit时出错(第415行) NaN由模型函数计算,拟合无法继续。 尝试使用或收紧系数的上限和下限。 配合错误(第109行) [fitobj,goodness,output,convmsg]=iFit(xdatain,ydatain,fittypeobj

WHYYYY!?在我的x和y矩阵中没有0,我认为没有任何东西会返回NaN值,我可以毫无问题地计算逆关系拟合(y,x,'power1')

谢谢你的帮助/建议

编辑:(精确地说)Excel确实找到了适合(x,y)的幂律

EDIT2:代码,一旦x和y存储为变量:

[p_powerlaw,results_powerlaw] = fit(x,y,'power1');
EDIT3:我已经更改了链接。现在,在我的dropbox中,你会找到x和y的.mat…试着给它们配上电源1…:p不起作用!为什么?我不明白


并尝试将2个矩阵x和y的值复制粘贴到其他矩阵中(不是通过赋值,实际上是通过复制粘贴值)…拟合没有问题。

在倍频程中没有与
fit
等效的东西,但是,我可以做一些非线性曲线拟合(MATLAB等效物可以是或优化工具箱):

这给了我以下系数(与@Ander Biguri相同)和图表:

y = a * x^b
a = 13.416
b = 0.94642

我认为问题不在于你有0或没有0,而是如果拟合算法可以或不能重新拟合解决方案。不幸的是,并非所有的问题都可以拟合:(.然而,我不确定情况是否如此。谢谢安德斯。但我只是愚蠢地认为,当我绘制数据时,没有异常值,它非常平滑。EXCEL找到了拟合!!!嗯,我执行了它,得到了结果…A=13.42 b=0.9464在Matlab中???拟合(x,y,'power1'))对于我的x和y???mm,请确保您首先正确地进行操作…发布您的整个代码(应该是3-4行)嗨!感谢您的回答。但我怀疑这是因为如果我尝试以另一种方式拟合幂函数(“拟合(y,x,'power1')”),则没有问题。无论如何,您不必为拟合对数据进行排序…:(好的,我会删除我的答案。不要!答案总是很重要的…:)编辑我的答案,以显示有可能得到符合数据的幂律。嘿!再次感谢。但你确定你在这里拟合幂律吗?幂律函数(带指数表达式)更像是y=a*exp(b*ln(x))而不是y=a*exp(b*x)
y = a * x^b
a = 13.416
b = 0.94642