本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

matlab培训 cdadata 6532℃

Matlab 线性拟合 & 非线性拟合

关键词:matlab非线性拟合函数,matlab多元非线性拟合,matlab非线性曲线拟合,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:

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

结果:p =    1.0200    0.0400

即y=1.0200 *x+ 0.0400

Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

法2:

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

运行结果:

  1.  x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
  2. p=fittype(‘poly1’)
  3. f=fit(x,y,p)
  4. plot(f,x,y);
  5. p =
  6.      Linear model Poly1:
  7.      p(p1,p2,x) = p1*x + p2
  8. f =
  9.      Linear model Poly1:
  10.      f(x) = p1*x + p2
  11.      Coefficients (with 95% confidence bounds):
  12.        p1 =        1.02  (0.7192, 1.321)
  13.        p2 =        0.04  (-0.5981, 0.6781)
Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

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

法1:

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

运行结果:

  1.  x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
  2. EXPR = {‘x’,‘sin(x)’,‘1’};
  3. p=fittype(EXPR)
  4. f=fit(x,y,p)
  5. plot(f,x,y);
  6. p =
  7.      Linear model:
  8.      p(a,b,c,x) = a*x + b*sin(x) + c
  9. f =
  10.      Linear model:
  11.      f(x) = a*x + b*sin(x) + c
  12.      Coefficients (with 95% confidence bounds):
  13.        a =       1.249  (0.9856, 1.512)
  14.        b =      0.6357  (0.03185, 1.24)
  15.        c =     -0.8611  (-1.773, 0.05094)
法2:
  1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
  2.  p=fittype(‘a*x+b*sin(x)+c’,‘independent’,‘x’)
  3. f=fit(x,y,p)
  4. plot(f,x,y);
运行结果:
  1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
  2.  p=fittype(‘a*x+b*sin(x)+c’,‘independent’,‘x’)
  3. f=fit(x,y,p)
  4. plot(f,x,y);
  5. p =
  6.      General model:
  7.      p(a,b,c,x) = a*x+b*sin(x)+c
  8. Warning: Start point not provided, choosing random start
  9. point.
  10. > In fit>iCreateWarningFunction/nThrowWarning at 738
  11.   In fit>iFit at 320
  12.   In fit at 109
  13. f =
  14.      General model:
  15.      f(x) = a*x+b*sin(x)+c
  16.      Coefficients (with 95% confidence bounds):
  17.        a =       1.249  (0.9856, 1.512)
  18.        b =      0.6357  (0.03185, 1.24)
  19.        c =     -0.8611  (-1.773, 0.05094)
Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

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

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

法1:

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

运行结果:

  1. p =
  2.      General model:
  3.      p(a,b,c,x) = a*x.^2+b*x+c
  4. Warning: Start point not provided, choosing random start
  5. point.
  6. > In fit>iCreateWarningFunction/nThrowWarning at 738
  7.   In fit>iFit at 320
  8.   In fit at 109
  9. f =
  10.      General model:
  11.      f(x) = a*x.^2+b*x+c
  12.      Coefficients (with 95% confidence bounds):
  13.        a =     -0.2571  (-0.5681, 0.05386)
  14.        b =       2.049  (0.791, 3.306)
  15.        c =       -0.86  (-2.016, 0.2964)
Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

法2:

  1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];
  2. %use c=0;
  3. c=0;
  4. p1=fittype(@(a,b,x) a*x.^2+b*x+c)
  5. f1=fit(x,y,p1)
  6. %use c=1;
  7. c=1;
  8. p2=fittype(@(a,b,x) a*x.^2+b*x+c)
  9. f2=fit(x,y,p2)
  10. %predict c
  11. p3=fittype(@(a,b,c,x) a*x.^2+b*x+c)
  12. f3=fit(x,y,p3)
  13. %show results
  14. scatter(x,y);%scatter point
  15. c1=plot(f1,‘b:*’);%blue
  16. hold on
  17. plot(f2,‘g:+’);%green
  18. hold on
  19. plot(f3,‘m:*’);%purple
  20. hold off

Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

转载请注明:数据分析 » Matlab 线性拟合 & 非线性拟合_matlab非线性拟合函数

喜欢 (0)or分享 (0)