关于非线性拟合的学习笔记

[复制链接]
1152|8
 楼主| 叶春勇 发表于 2021-3-13 11:11 | 显示全部楼层 |阅读模式
最近看到一个photoDiode传感器的帖子,里面需要求自然指数的衰减时间。
https://bbs.21ic.com/icview-3101468-1-1.html
 楼主| 叶春勇 发表于 2021-3-13 11:31 | 显示全部楼层
方法一:是将非线性模型转化成线性模型

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

叶工真是个认真的人,每次看您的回复,都经过仔细编辑和排版,看起来很舒服,也很严谨,不像某些大仙,龙飞凤舞地画几笔,显得很高深的样子  发表于 2021-3-14 10:13
 楼主| 叶春勇 发表于 2021-3-13 11:37 | 显示全部楼层
用原帖作者的衰减曲线的excel文件,进行测试
python代码如下:
  1. import math
  2. import numpy as np
  3. import xlrd

  4. xls=xlrd.open_workbook(r'd:\data.xls')##读取excel文件
  5. sheet=xls.sheet_by_name('衰减曲线')
  6. y=[]

  7. for i in range(1,14,1):
  8.     temp=[]
  9.     for j in range(0,60,1):
  10.         temp.append(sheet.cell(3+j,i).value)##共13组
  11.     y.append(temp)

  12. #建立A矩阵
  13. A=np.ones((2,60))
  14. A[1]=-np.arange(0,60)/1000000
  15. A=A.T
  16. A=np.matrix(A)
  17. AA=((A.T*A)**-1)*A.T

  18. #求13组数据的时间
  19. b=np.log(np.matrix(y).T)
  20. b=AA*b
  21. print(b[1])


输出结果:时间被放大过1000000
  1. [[28068.88373367 27974.40821863 28652.51187232 28526.23801597
  2.   28072.3430224  28263.22917422 28453.26937705 28072.08262794
  3.   28143.77543767 28598.12668447 29059.58836214 29655.77554097
  4.   35143.3727371 ]]

评论

@Jack315 :我的是一次计算13个,脚本语言还是很强大的。  发表于 2021-3-13 13:50
参考:python 线性回归示例,https://www.cnblogs.com/hhh5460/p/5786115.html  发表于 2021-3-13 12:23
 楼主| 叶春勇 发表于 2021-3-13 12:24 | 显示全部楼层
如果要用单片机去拟合,算法分析如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 叶春勇 发表于 2021-3-13 14:30 | 显示全部楼层
接上楼:

分析完毕。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 叶春勇 发表于 2021-3-13 17:21 | 显示全部楼层
非线性拟合还有高斯牛顿法,用在单片机上运算量较大,但是在传感器开发阶段,可以得到最优值。作为比较。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

151

主题

4810

帖子

50

粉丝
快速回复 在线客服 返回列表 返回顶部