社区
图形处理/算法
帖子详情
问一个简单的算法问题, 从曲线拟合出一条直线
captainwh
2005-12-12 10:29:17
比如数据显示为一条曲线, 曲线基本可以分为两个部分: 弹性部分和非弹性部分
在弹性部分, 表现为近似一条直线, 就是说曲线的曲度非常小; 到了非弹性部分, 曲线的弯曲度就变化很大了
现在需要通过程序对曲线数据的分析, 将弹性部分和非弹性部分区分开来, 并且为弹性部分拟合出一条近似直线, 求其斜率
曲线数据(x, y), 请问有哪些数学方法可用的, 最好能说下原理, 对这些数学上的东西不熟悉, 感觉程序还是容易实现的
...全文
518
8
打赏
收藏
问一个简单的算法问题, 从曲线拟合出一条直线
比如数据显示为一条曲线, 曲线基本可以分为两个部分: 弹性部分和非弹性部分 在弹性部分, 表现为近似一条直线, 就是说曲线的曲度非常小; 到了非弹性部分, 曲线的弯曲度就变化很大了 现在需要通过程序对曲线数据的分析, 将弹性部分和非弹性部分区分开来, 并且为弹性部分拟合出一条近似直线, 求其斜率 曲线数据(x, y), 请问有哪些数学方法可用的, 最好能说下原理, 对这些数学上的东西不熟悉, 感觉程序还是容易实现的
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
captainwh
2005-12-12
打赏
举报
回复
比较麻烦的是曲线中可能存在毛刺
即弹性段中突然出现一个尖锐的突起
雨中的月儿
2005-12-12
打赏
举报
回复
用最小二乘法吧,计算复杂度不能保证,不过,会满足你的要求。
具体看看 概率论与数理统计 这本书。
captainwh
2005-12-12
打赏
举报
回复
欢迎再提出其他的好方法
captainwh
2005-12-12
打赏
举报
回复
试试楼上的方法, 看看效果如何吧
感觉最小二乘怎么的也该比我程序里现在的办法好些
寻开心
2005-12-12
打赏
举报
回复
上面的方法实际上就是逆合出来了,整条曲线的斜率的变化趋势
显然,弹性部分的不同段的斜率都是很相近的,而其他的部分就不同
只要找出最相近并且相邻的区域就是弹性区域,此外就是非弹性的
寻开心
2005-12-12
打赏
举报
回复
初步想法,针对二维的曲线的时候
根据数据的范围,把x坐标划分成若干段,段不妨划分的细一些
在每个段当中用最小二乘逆合直线,获得斜率
然后比较这些段当中的斜率
如果相邻的两个段的斜率很接近,那么证明这两个数据段的数据,近似于一条直线
类似的可以把弹性部分合并到一起了
而后面的非弹性的部分,由于相邻的段的斜率变化比较大,和前面的分不到一起去的
captainwh
2005-12-12
打赏
举报
回复
目前想到的笨办法是从曲线第二点开始, 依次求其与第一点之间直线的斜率, 第一次计算结果(1, 2点间直线斜率)作为初始斜率, 将之后每次计算结果与初始斜率比较, 当偏差大于一定程度时, 认为该点是弹性段与非弹性段的分界点
不过老实说自己也感觉这么干比较笨, 数据应该也不准确, 我想应该有些专门的数学方法来做这种事情的吧
寻开心
2005-12-12
打赏
举报
回复
最小二乘逆合后,用逆合的结果来修正一下原始的数据,
剔除距离逆合出来的直线比较远的数据,然后用剩余的数据再次重新逆合以得到更准确的斜率。
如果你是已知曲线的函数类型,应该使用非线性最小二乘直接逆合曲线
然后根据曲线的参数来确定弹性和非弹性的区间的
曲线拟合
计算(java实现)
一个
用于计算曲线和
直线
拟合的小软件,用java语言编写,做的不是太好,请大家不要责怪
多个
曲线拟合
算法
源码
最小二乘法的多个
曲线拟合
算法
源码 下边只列
出
一次的: BOOL CalculateLineKB(CFoldPointList *m_FoldList,double &k,double &b) { //最小二乘法
直线
拟合 //m_FoldList为关键点(x,y)的链表 //拟合
直线
方程(Y=kX+b) if(m_FoldList==NULL)return FALSE; long lCount=m_FoldList->GetCount(); if(lCountGetHeadPosition(); while(pos != NULL) { pFold=m_FoldList->GetNext(pos); mX+=pFold->X; mY+=pFold->Y; mXX+=pFold->X*pFold->X; mXY+=pFold->X*pFold->Y; } if(mX*mX-mXX*n==0)return FALSE; k=(mY*mX-mXY*n)/(mX*mX-mXX*n); b=(mY-mX*k)/n; return TRUE; }
基于PLC的自由曲线绘制拟合
算法
实现
主要提供一种用PLC来实现画自由曲线的方法,方法
简单
,思路明确,容易实现
曲线拟合
&&线性回归(C#)
这个是我做的系统的部分
算法
的实现,主要是
曲线拟合
和线性回归。不改名字了,直接传上来吧。
Java编写的用最小二乘拟合曲线(带图形)
java,数值计算,
曲线拟合
,最小二乘,带画图,程序中数据都是固定的如果想应用于其他数据可自行更改,很easy。
图形处理/算法
19,473
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章