查看: 1384|回复: 12|关注: 0

[已解决] 固定斜率参数线性拟合

[复制链接]

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
各位大佬 小弟我在做Y和X的线性拟合 代码如下
for n=1:1:5 % 5 gases
    for i=1:1:7 % 7 temps
        Y(i)=a*log(den(i)/1000)+log(DC(i,n)); % den:g/cm3 DC:10^-8m2/s
        X(i)=c*log(T(i))-b*log(vis(i));
    end
    Dscfit=polyfit(X,Y,1);
    plot(X,polyval(Dscfit,X),'linewidth',3);
    hold on;
end
hold off;



线性拟合用polyfit是给出的最优条件下的截距和斜率,该值存在Dscfit变量中可是如果我要在固定的斜率上进行线性拟合该怎么实现呢?比如我想固定斜率为1,然后进行线性拟合

谢谢大家



新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-27 19:40:08 | 显示全部楼层
额 重新贴一下代码 上面的不清楚

for n=1:1:5 % 5 gases
    for i=1:1:7 % 7 temps
        Y(i)=a*log(den(i)/1000)+log(DC(i,n)); % den:g/cm3 DC:10^-8m2/s
        X(i)=c*log(T(i))-b*log(vis(i));
    end
    Dscfit=polyfit(X,Y,1);
    plot(X,polyval(Dscfit,X),'linewidth',3);
    hold on;
end
hold off;

论坛优秀回答者

权威

9151 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 518
发表于 2018-12-27 21:14:22 | 显示全部楼层 |此回复为最佳答案
本帖最后由 jingzhaos 于 2018-12-27 21:20 编辑
zx108s221 发表于 2018-12-27 19:40
额 重新贴一下代码 上面的不清楚

for n=1:1:5 % 5 gases

固定斜率?那就相当与a*x+b,已知a 。是这样?如果是,那就是拟合一个参数b,可以不用polyfit, 换换其他函数。比如
  1. x=sort(randi(40,15,1))
  2. y=5*x+rand(15,1)*10
  3. fit(x,y,'5*x+b','start',5)
复制代码

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-27 21:20:31 | 显示全部楼层
jingzhaos 发表于 2018-12-27 21:14
固定斜率?那就相当与a*x+b,已知a 。是这样?如果是,那就是拟合一个参数b,可以不用polyfit, 换换其他函 ...

en
那怎么做呀
我现在是写了if来判断斜率掉入0.9-1.1这个区间
您说的这个其他函数,这个更加科学合理的方法是什么呢
谢谢啦

论坛优秀回答者

权威

9151 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 518
发表于 2018-12-27 21:24:53 | 显示全部楼层
zx108s221 发表于 2018-12-27 21:20
en
那怎么做呀
我现在是写了if来判断斜率掉入0.9-1.1这个区间

fit可以呀。前面的例子没有看懂吗?给定斜率就是5,你可以改成1呀。

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-28 09:18:27 | 显示全部楼层
jingzhaos 发表于 2018-12-27 21:24
fit可以呀。前面的例子没有看懂吗?给定斜率就是5,你可以改成1呀。

奥奥 昨晚看到的时候代码那部分还没有显示出来
这样做的话,如何去计算线性拟合的R2呢?

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-28 09:20:56 | 显示全部楼层
jingzhaos 发表于 2018-12-27 21:24
fit可以呀。前面的例子没有看懂吗?给定斜率就是5,你可以改成1呀。

YY=X+b
corrcoeff(Y,YY)
这个计算出来再平方就是R2了吧?

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-28 09:27:39 | 显示全部楼层
jingzhaos 发表于 2018-12-27 21:24
fit可以呀。前面的例子没有看懂吗?给定斜率就是5,你可以改成1呀。

还有就是 这个fit的结果b怎么存储到一个数组里面呢?默认是直接打印出来了
此笨小弟问题比较多 麻烦啦

新手

7 麦片

财富积分


050


1

主题

9

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-12-28 09:37:41 | 显示全部楼层
zx108s221 发表于 2018-12-28 09:27
还有就是 这个fit的结果b怎么存储到一个数组里面呢?默认是直接打印出来了
此笨小弟问题比较多 麻烦啦 ...

奥 查到了 fit.b就可以保存了

论坛优秀回答者

权威

9151 麦片

财富积分



11

主题

1万

帖子

1994

最佳答案
  • 关注者: 518
发表于 2018-12-28 09:45:57 | 显示全部楼层
zx108s221 发表于 2018-12-28 09:20
YY=X+b
corrcoeff(Y,YY)
这个计算出来再平方就是R2了吧?

[result gof]=fit(x,y,'5*x+b','start',5) gof里面有R^2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表