MatLab幂定律,非正值误差

时间:2017-03-15 10:46:16

标签: matlab curve-fitting power-law

您好我正在尝试使用MatLab的拟合函数为我的数据拟合功率模型

fo = fit(log2(x(:)),log2(y(:)),'power1');
plot(fo,'g'), hold on

然而,当我运行此操作时,我收到错误

Error using fit>iFit (line 282)
Cannot fit Power functions to data where X has nonpositive values.

Error in fit (line 108)
[fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ... 

Error in CurvedPowerLaw (line 20)
fo = fit(log2(x(:)),log2(y(:)),'power1');

查看我的数据并检查是否有少于1时,不显示任何内容

x(count_1)=M(i,1);
y(count_1)=M(i,2);
count_1= count_1+1;
if(M(i,2)<1)
    display(M(i,1))
end;

M是一个包含两列的csv文件。我还重新编写了

的代码
if(M(i,1)<1)

并且没有显示任何内容。手动检查,似乎没有任何东西低于1。

我只是正在解析的文件中的行。该文件看起来像

344,17
345,13
346,13
347,16
340,12

M(i,1)将返回> 300个数字中的一个,M(i,2)将返回~10值 任何帮助将不胜感激!!

由于

1 个答案:

答案 0 :(得分:0)

虽然所有解析的值在按log2缩放时都是> 0,而0是开始出现的值。一个快速解决方法是在解析它们时为每个值添加1。