Matlab 多项式拟合

1. 按

polyfit函数用于多项式的曲线拟合。

1.1. 语法

p = polyfit(x,y,n)
[p,S] = polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)

说明

  • p = polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为 n+1
    p ( x ) = p 1 x n + p 2 x n − 1 + … + p n x + p n + 1 p(x)=p_{1} x^{n}+p_{2} x^{n-1}+\ldots+p_{n} x+p_{n+1} p(x)=p1xn+p2xn1++pnx+pn+1
  • [p,S] = polyfit(x,y,n) 还返回一个结构体 S,后者可用作 polyval 的输入来获取误差估计值。
  • [p,S,mu] = polyfit(x,y,n) 还返回 mu,后者是一个二元素向量,包含中心化值和缩放值。mu(1) 是 mean(x),mu(2) 是 std(x)。使用这些值时,polyfit 将 x 的中心置于零值处并缩放为具有单位标准差
    x ^ = x − x ‾ σ x \hat{x}=\frac{x-\overline{x}}{\sigma_{x}} x^=σxxx
    这种中心化和缩放变换可同时改善多项式和拟合算法的数值属性。

2. 一次多项式

clc,clear,close all; %清除命令,清空工作区,关闭所有窗口

x=[0.33, 1.12, 1.41, 1.71, 2.19];
y=[0.68, 0.91, 1.15, 1.83, 2.07];

%拟合
p1=polyfit(x, y, 1);% 用x 和 y 拟合多项式, 1 表示一次多项式
disp(p1);% 输出  0.8025    0.2431 表示多项式是 f(x) = 0.8025 * x + 0.2431

%绘制图形
y1=polyval(p1, x);
plot(x, y, '*', x, y1, '-');

在这里插入图片描述

3. 二次多项式

x=[0.47, 0.96, 1.76, 2.53, 3.30, 3.74];
y=[1.07, 1.75, 2.27, 2.31, 1.49, 0.74];
 
% 拟合多项式
p2 = polyfit(x,y, 2); %2代表二次多项式拟合
disp(p2); %输出 -0.5495    2.2250    0.1260 多项式为 f(x) = -0.5495 * x * x + 2.225 * x + 0.126	

%绘制图形
x2=0:0.1:4;
%x2=x;
y2 = polyval(p2, x2);
plot(x, y, '*', x2, y2 , '-');

在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页