你在这里找到一个通用的解决方案是一个相当困难的问题.

一种方法是计算所有连续点对之间的所有斜率/相交,然后对间隙进行聚类分析:

slopes = diff(y)./diff(x);

intersepts = y(1:end-1) - slopes.*x(1:end-1);

idx = kmeans(intersepts, 3);

x([idx; 3] == 2) % the points with the intersepts closest to the linear one.

这需要统计工具箱(对于kmeans).这是我尝试的所有方法中最好的,虽然这样找到的点数范围可能会有一些小洞;例如,当开始和结束范围中的两个点的斜率接近线的斜率时,这些点将被检测为属于该线.这(以及其他因素)将需要对这种方式的解决方案进行更多的后处理.

另一种方法(我未能成功构建)是在循环中进行线性拟合,每次都增加从中间某点到两个端点的点的范围,并查看平方误差的总和是否仍然很小.我很快放弃了,因为定义“小”是非常主观的,必须以某种启发式方式完成.

我尝试了一种更加系统和强大的方法:

function test

%% example data

slope = 2;

intercept = 1.5;

x = linspace(0.1, 5, 100).';

y = slope*x + intercept;

y(1:12) = log(x(1:12)) + y(12)-log(x(12));

y(74:100) = y(74:100) + (x(74:100)-x(74)).^8;

y = y + 0.2*randn(size(y));

%% simple algorithm

[X,fn] = fminsearch(@(ii)P(ii, x,y,intercept), [0.5 0.5])

[~,inds] = P(X, y,x,intercept)

end

function [C, inds] = P(ii, x,y,intercept)

% ii represents fraction of range from center to end,

% So ii lies between 0 and 1.

N = numel(x);

n = round(N/2);

ii = round(ii*n);

inds = min(max(1, n+(-ii(1):ii(2))), N);

% Solve linear system with fixed intercept

A = x(inds);

b = y(inds) - intercept;

% and return the sum of squared errors, divided by

% the number of points included in the set. This

% last step is required to prevent fminsearch from

% reducing the set to 1 point (= minimum possible

% squared error).

C = sum(((A\b)*A - b).^2)/numel(inds);

end

它只能找到所需索引的粗略近似值(本例中为12和74).

当fminsearch使用随机起始值运行几十次(实际上只是rand(1,2))时,它变得更可靠,但我仍然没有打赌我的生活.

如果您有统计工具箱,请使用kmeans选项.

matlab线性拟合最大偏差值,algorithm – matlab:线性拟合的最佳点数相关推荐

  1. matlab最大回撤值,用matlab计算区间最大回撤值和最大回撤率

    用matlab 计算区间最大回撤值和最大回撤率 在股票投资的时候有一个很重要的概念-最大回撤.最大回撤被定义为: min()min(max )j i j i i j j i j d x x x x & ...

  2. matlab随机函数rand取值范围,Matlab随机函数rand使用中应注意的问题

    matlab随机函数rand使用中应注意的问题 (1). rand产生的是0到1(不包括1)的随机数. Matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数. M ...

  3. matlab设计自适应中值滤波,matlab课程设计(自适应中值滤波).doc

    matlab课程设计(自适应中值滤波).doc 10信息工程系课程设计报告课程MATLAB课程设计专业通信工程班级2级本科二班学生姓名1景学号114学生姓名2学号1414学生姓名3王学号6学生姓名4学 ...

  4. matlab解方程最值点,MATLAB解方程与函数极值

    1.线性方程数值求解 主要是用到了计算方法里的LU分解等不过是加快了求解速度而已相对于inv(A)*b或者A\b 2.非线性方程数值求解 1 单变量非线性方程求解 在MATLAB中提供了一个fzero ...

  5. matlab求矩阵中值函数,matlab在一个函数里,如何调用另一个函数里面求得的雅可比矩阵并赋值?...

    function[x,n]=jacobi_solve(a,b,x0,dalt)%jacobi跌代2113法解线性方程组%[x,n]=jacobi_solve(a,b,x0,dalt)%a方程组系数52 ...

  6. matlab采交流电压幅值,基于MATLAB的电力电子技术仿真分析

    9 如上图所示,当晶闸管VT处于断态时,电路中电流Id=0,负载上的电压为0,U2 全部加在VT两端,在触发角α处,触发VT使其导通,U2加于负载两端,由于电感L的存在使电流id不能突变,id从0开始 ...

  7. 线性神经网络原理以及MATLAB算法实现权值拟合和可线性分类

    前言 本章主要参考<MATLAB 神经网络原理与实例精讲 陈明等编著> 一.线性神经网络原理 一般来说,线性神经网络就是感知器的升级版,但相比于单层感知器,线性神经网络有很多的优点,其对比 ...

  8. matlab最小二乘法拟合图旋转,【Matlab】—{最小二乘法拟合一阶线性拟合传感器实验}...

    [Matlab]-{最小二乘法拟合一阶线性拟合传感器实验} [Matlab]-{最小二乘法拟合一阶线性拟合&传感器实验} ???九层妖塔?起于垒土 [Matlab]-{最小二乘法拟合一阶线性拟 ...

  9. 线性回归用matlab怎么做,matlab中如何应用regress()函数进行线性回归分析?

    matlab中如何应用regress()函数进行线性回归分析?回归分析是研究一个随机变量与一个或多个普通变量之间的相关系的统计方法.如果做回归分析,有很多软件都已经封装好了的,我们只需直接调用就可以了 ...

  10. 用MATLAB app designer设计人机交互界面——二阶线性动态电路可视化分析的研究

    用MATLAB app designer设计人机交互界面--二阶线性动态电路可视化分析的研究 这是我第一次尝试写博客,我试着给出电路课上要求的电路实验编程.但是电路的类型有点儿多,所以我只以二阶动态电 ...

最新文章

  1. vue和react相同点_我在React和Vue中创建了相同的应用程序。 这是区别。
  2. Python 哪种方式循环最快,或许颠覆你的认知!
  3. RookeyFrame 删除 线下添加的model
  4. Objective-C 文件夹操作
  5. java如何做数据归档_oracle数据库的归档方式
  6. 微信小程序自定义组件方案
  7. python 画布 保存_Python Tkinter使用PIL将画布保存为图像
  8. HBae找不到协处理器导致RegionServer全部挂掉
  9. 超人气光棍节!现在时间虽然不是2011年11月11日11点11分11秒11毫秒11微秒11纳秒11皮秒11飞秒11阿秒11渺秒11......
  10. 今年纽微特公司股东会不开了?
  11. 无盘服务器bios设置,无盘服务器bios设置
  12. 充气泵方案设计-汽车打气泵PCBA
  13. 图纸管理系统_图纸文档管理软件系统
  14. 在达内学java出来可靠吗_【求解】在达内学习java也有内幕啊 我要曝光!
  15. 学校更换门窗计算机桌椅,学校机房建设中需要注意的细节
  16. 日本现场常用日语词汇
  17. c语言线性表写的数据库系统(数据结构)
  18. 中测院能耗管理系统的设计及应用
  19. J2EE是什么,主要包括哪些技术【转】
  20. 页面跳转传参,A 页面跳转到B页面,把A页面获取的值传到B页面

热门文章

  1. 注册免费域名教程(怎样免费注册域名)
  2. Port vlan Tag vlan
  3. Android 7.1 设置不支持遥控操作?
  4. 滴滴入局同城货运,一场闪电战,还是持久战?
  5. CentOS7创建桌面快捷方式
  6. 维基百科中文语料分析(附实际评论案例)
  7. c语言无法定位程序输入点 于动态链接库,无法定位程序输入点 于动态链接库怎么办...
  8. iPhone13全系列参数对比
  9. VBA多工作簿中多工作表分类汇总
  10. 不良 : Cloudera Manager Agent 的日志目录位于可用空间小于 1.0 吉字节 的文件系统上。 /var/log/cloudera-scm-agent(可用:434.8 兆字节 (