MATLAB小技巧(29)多项式拟合 plotfit
前言
MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!
多项式拟合是用一个多项式展开去拟合包含数个分析格点的一小块分析区域中的所有观测点,得到观测数据的客观分析场。展开系数用最小二乘拟合确定。但此方法的区域多项式拟合并不稳定,当资料缺测时更是如此,而且会导致分析在拟合的各个区域之间不连续。
在数据分析预测时,较常见的拟合方法,通过最小二乘法得到拟合多项式,从而可以预测得到为之参数的预测值,搜寻资料的时候遇到的这个示例,这里分享给大家,本文示例仿真MATLAB版本为MATLAB2015b。
一. MATLAB仿真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:多项式拟合
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-28
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% I. 清空环境变量
clear all
clc
tic
y=[100.3 101.1 102.1 101.1 101.6 104.4 102.5 102.1 103.9 103.9];
x=1:length(y);
A=polyfit(x,y,2) %2次相拟合,这个2可以修改的 模型系数
Z=polyval(A,x); %预测y
len=[1:20];
len1=polyval(Z,len); %预测走势
result=[y;Z]%实际值与预测值
error=abs(y-Z);%误差
bfb=error./y%相对误差
errorsum=sum(error)/length(y)%平均误差
bfbsum=sum(bfb)/length(y)%平均相对误差
figure(1)
plot(x,y,'r-',x,Z,'b-')
legend('实际值','拟合值')
title('实际值与预测值的比较','fontsize',15)
ylabel('Y','fontsize',15)
xlabel('X','fontsize',15)
figure(2)
plot(len,len1,'b-')
legend('拟合曲线')
title('拟合曲线图','fontsize',15)
ylabel('Y','fontsize',15)
xlabel('X','fontsize',15)
toc
二. 仿真结果
A =
-0.0144 0.5159 100.0167
result =
100.3000 101.1000 102.1000 101.1000 101.6000 104.4000 102.5000 102.1000 103.9000 103.9000
100.5182 100.9909 101.4348 101.8500 102.2364 102.5939 102.9227 103.2227 103.4939 103.7364
bfb =
0.0022 0.0011 0.0065 0.0074 0.0063 0.0173 0.0041 0.0110 0.0039 0.0016
errorsum =
0.6300
bfbsum =
0.0061
时间已过 2.561846 秒。
三. 小结
多项式拟合的仿真示例,后期可能会用到,这里做个笔记。每天学一个MATLAB小知识,大家一起来学习进步阿!