原文地址为: Matlab 线性拟合 & 非线性拟合

使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法。

关键函数:

fittype

Fit type for curve and surface fitting

Syntax

ffun = fittype(libname)
ffun = fittype(expr)
ffun = fittype({expr1,...,exprn})
ffun = fittype(expr, Name, Value,...)
ffun= fittype({expr1,...,exprn}, Name, Value,...)

/***********************************线性拟合***********************************/

线性拟合公式:

coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...

其中,coefficient是系数,term都是x的一次项。

线性拟合Example:

Example1: y=kx+b;

法1:

x=[1,1.5,2,2.5,3];y=[0.9,1.7,2.2,2.6,3];
p=polyfit(x,y,1);
x1=linspace(min(x),max(x));
y1=polyval(p,x1);
plot(x,y,'*',x1,y1);

结果:p =    1.0200    0.0400

即y=1.0200 *x+ 0.0400

法2:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
p=fittype('poly1')
f=fit(x,y,p)
plot(f,x,y);

运行结果:

 x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
p=fittype('poly1')
f=fit(x,y,p)
plot(f,x,y);p = Linear model Poly1:p(p1,p2,x) = p1*x + p2f = Linear model Poly1:f(x) = p1*x + p2Coefficients (with 95% confidence bounds):p1 =        1.02  (0.7192, 1.321)p2 =        0.04  (-0.5981, 0.6781)

Example2:y=a*x + b*sin(x) + c

法1:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
EXPR = {'x','sin(x)','1'};
p=fittype(EXPR)
f=fit(x,y,p)
plot(f,x,y);

运行结果:

 x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
EXPR = {'x','sin(x)','1'};
p=fittype(EXPR)
f=fit(x,y,p)
plot(f,x,y);p = Linear model:p(a,b,c,x) = a*x + b*sin(x) + cf = Linear model:f(x) = a*x + b*sin(x) + cCoefficients (with 95% confidence bounds):a =       1.249  (0.9856, 1.512)b =      0.6357  (0.03185, 1.24)c =     -0.8611  (-1.773, 0.05094)
法2:
x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];p=fittype('a*x+b*sin(x)+c','independent','x')
f=fit(x,y,p)
plot(f,x,y);

运行结果:
x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];p=fittype('a*x+b*sin(x)+c','independent','x')
f=fit(x,y,p)
plot(f,x,y);p = General model:p(a,b,c,x) = a*x+b*sin(x)+c
Warning: Start point not provided, choosing random start
point.
> In fit>iCreateWarningFunction/nThrowWarning at 738In fit>iFit at 320In fit at 109 f = General model:f(x) = a*x+b*sin(x)+cCoefficients (with 95% confidence bounds):a =       1.249  (0.9856, 1.512)b =      0.6357  (0.03185, 1.24)c =     -0.8611  (-1.773, 0.05094)

/***********************************非线性拟合***********************************/

Example:y=a*x^2+b*x+c

法1:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];p=fittype('a*x.^2+b*x+c','independent','x')
f=fit(x,y,p)
plot(f,x,y);

运行结果:

p = General model:p(a,b,c,x) = a*x.^2+b*x+c
Warning: Start point not provided, choosing random start
point.
> In fit>iCreateWarningFunction/nThrowWarning at 738In fit>iFit at 320In fit at 109 f = General model:f(x) = a*x.^2+b*x+cCoefficients (with 95% confidence bounds):a =     -0.2571  (-0.5681, 0.05386)b =       2.049  (0.791, 3.306)c =       -0.86  (-2.016, 0.2964)

法2:

x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
%use c=0;
c=0;
p1=fittype(@(a,b,x) a*x.^2+b*x+c)
f1=fit(x,y,p1)
%use c=1;
c=1;
p2=fittype(@(a,b,x) a*x.^2+b*x+c)
f2=fit(x,y,p2)
%predict c
p3=fittype(@(a,b,c,x) a*x.^2+b*x+c)
f3=fit(x,y,p3)%show results
scatter(x,y);%scatter point
c1=plot(f1,'b:*');%blue
hold on
plot(f2,'g:+');%green
hold on
plot(f3,'m:*');%purple
hold off

转载请注明本文地址: Matlab 线性拟合 & 非线性拟合

Matlab 线性拟合 非线性拟合相关推荐

  1. matlab 线性最小二乘法,matlab_最小二乘法线性和非线性拟合.ppt

    3.血液容积v, t=0注射剂量d, 血药浓度立即为d/v. 2.药物排除速率与血药浓度成正比,比例系数 k(>0) 模型假设 1. 机体看作一个房室,室内血药浓度均匀--一室模型 模型建立 在 ...

  2. matlab中三维非线性拟合,matlab非线性拟合与绘制三维曲面

    建议用1stOpt,使用简单,不用猜初值,拟合效果非常强.下面是由1stOpt得出的结果,应该是唯一最优解.如果用其它软件,估计花费时间不少还不一定能得到最优解. 均方差(RMSE): 2.88773 ...

  3. Matlab学习手记——非线性拟合方法:压缩因子粒子群算法

    目的:采用压缩因子粒子群算法实现双指数拟合. function x_opt = PSO_ExpFit2(t, Et) %{ 函数功能:压缩因子粒子群算法实现指数拟合:y = a1*exp(-x/b1) ...

  4. matlab的nlinfit函数,用matlab如何进行非线性拟合 nlinfit函数?

    用非线性回归nlinfit,如果数据点多些,效果会更好. function nonlinefit clc;clear; t=[0 4 8 40]; y=[20.09 64.52 85.83 126.7 ...

  5. Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)

    Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 在线查看 运行src/main/java/org/wfw/chart/Main.java ...

  6. MATLAB 数据处理(二)非线性拟合——洛伦兹拟合(Lorentz fit)

    文章目录 一.拟合示例 二.单峰洛伦兹 2.1 洛伦兹线型函数表达式与物理含义 2.2 lsqcurvefit非线性拟合 2.3 代码实现 三.双峰洛伦兹 3.1 洛伦兹线型函数表达式与物理含义 3. ...

  7. matlab 椭圆方程拟合,matlab中如何插值拟合求椭圆方程

    [g_fitting.rar] 使用正交多项式完成数据拟合.程序对读入的gps采样点完成曲线拟合. (2007-08-01, matlab, 1KB, 26次) [曲面拟合.rar] 这是利用matl ...

  8. lsqcurvefit拟合结果为复数_非线性拟合怎么转化为线性拟合?

    1. 前言 对于多项式函数,可以用最小二乘法求得精确的拟合结果,使得拟合函数具有全局最优的拟合误差:对于某些非线性函数,如指数函数 ,也可以对函数转化后,求得精确的拟合结果,如上述指数函数可转化为 , ...

  9. Matlab非线性拟合工具箱cftool

    一. 单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性.非线性曲线拟合.下面结合我使用的 Matlab R2007b 来简单介绍如何使用这 ...

  10. 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool

    在Origin中使用自定义函数进行非线性拟合 http://blog.163.com/wuhen211@126/blog/static/7474635020105233269949/ matlab拟合 ...

最新文章

  1. 如何让linux的history命令显示时间记录
  2. 分布式系统设计的概念
  3. C++知识点25——使用C++标准库(容器适配器stack、queue、priority_queue)
  4. asp.net c#截取指定字符串函数
  5. 论文阅读:Joint Learning of Single-image and Cross-image Representations for Person Re-identification
  6. java发展过程中的重大事件
  7. 在.NET Core 中实现健康检查
  8. 酒桌上的规矩,社会的潜规则
  9. linux中代码挂上n,Linux系统常用命令nl详解(示例代码)
  10. sklearn常用聚类算法模型【KMeans、DBSCAN】实践
  11. python静态地图_Matplotlib Toolkits:地图绘制工具
  12. 经过几天的努力,出了 2 本保姆级编程电子书!
  13. 巴厘岛最全的美食攻略
  14. Day9学习记录 2021Python面向对象基础(下)(属性和方法的私有化、Property属性、__new__方法、单例模式 、异常处理、动态添加属性和方法、__slots__属性限制 )
  15. 横图图片广告代码html,jQuery网页底部固定横幅图片广告代码
  16. 阿弥陀佛和他的极乐世界
  17. JavaWeb企业实战项目(一):环境搭建-用户注册-邮件发送
  18. 全志D1-H裸奔工具XFEL
  19. ListView与ListView适配器
  20. 路由器的主要技术指标

热门文章

  1. CAD系统变量(参数)大全
  2. 【机器学习】金融风控评分卡建模全流程!
  3. UE4编译错误:Unable to delete XXX
  4. P1867 【Mc生存】经验值 java题解
  5. [线段树][数学]JZOJ 4237 Melancholy
  6. 格拉姆-施密特过程的程序实现
  7. iView组件+Django实现前后端分离上传图片
  8. 修改ftp服务器地址,ftp服务器ip地址修改
  9. Flutter 中文文档:使用 Packages
  10. mysql 汉字笔画排序规则_SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结...