matlab曲线拟合方法大全
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其他的预处理方法不便通过曲线拟合工具箱 来完成,主要包括两部分: 响应数据的转换和去除无穷大、缺失值和异 常值。 响应数据的转换一般包括对数转换、指数转 换,用这些转换可以使非线性的模型线性 化,便于曲线拟合。变量的转换一般在命令 行里实现,然后把转换后的数据输入曲线拟 合工具箱,进行拟合。
无穷大、不定值在曲线拟合中可以忽略,如 果想把他们从数据集中删除,可以用isinf和 isnan置换无穷大值和缺失值。
散点图
单击Data按钮
在X data和Y data两个下拉式列表框中选 择变量名,将在Data对话框中显示散点图的 预览效果:
当选择Data sets列表框中的数据集时,单 击View按钮,打开View Data Set对话框
工作表方式
2.数据的预处理
在曲线拟合工具箱中,数据的预处理主要包 括平滑法、排除法和区间排除法等。
(2)排除法和区间排除法 排除法是对数据中的异常值进行排除。 区间排除法是采用一定的区间去排除那些用 于系统误差导致偏离正常值的异常值。 在曲线拟合工具中单击Exclude按钮,可以 打开Exclude对话框
Exclusion rule name指定分离规则的名称 Existing exclusion rules列表产生的文件 名,当你选择一个文件名时,可以进行如下操 作: Copy 复制分离规则的文件; Rename重命名;delete 删去一个文件; View以图形的形式展示分离规则的文件。 Select data set 挑选需要操作的数据集; Exclude graphically允许你以图形的形式去 除异常值,排除个别的点用“×”标记。
曲线拟合工具箱
曲线拟合定义 在实际工程应用和科学实践中,经常需要寻求 两个(或多个)变量间的关系,而实际去只能 通过观测得到一些离散的数据点。针对这些分 散的数据点,运用某种你和方法生成一条连续 的曲线,这个过程称为曲线拟合。 曲线拟合可分为: (1)参数拟合 ---- 最小二乘法 (2)非参数拟合 ---- 插值法
18
20
22
24
26
28
30
>> a=polyfit(x,y,2) a= -0.2003 8.9782 -72.2150 >> poly2str(a,'x') ans = -0.20031 x^2 + 8.9782 x 72.215 >> x1=17:0.1:29; >> y1=0.20031*x1.^2+8.9782*x172.215; >> hold on;plot(x1,y1,'b')
二、曲线拟合
Matlab提供两种曲线拟合方法: (1)以函数的形式,使用命令对数据进行 拟合。这种方法比较繁琐,需要对拟合函 数有比较好的了解。 (2)用图形窗口进行操作,具有简便、快 速,可操作性强的优点。
1.多项式拟合函数
(1)Polyfit函数 P=polyfit(x,y,n) 用最小二乘法对数据进行拟合,返回n次多 项式的系数,并用降序排列的向量表示,长 度为n+1.
.y=polyval(p,x,[],mu)
用x=(x-u1)/u2代替x,其中mu是一个
二维向量[u1,u2], u1=mean(x),u2=std(x),通过这 样处理数据,使数据合理化。
[y,delta]=polyval(p,x,s) [y,delta]=polyval(p,x,s,mu) 产生置信区间y±delta。如果误差结果服从 标准正态分布,则实测数据落在y±delta区 间内的概率至少为50%。
Check to exclude point 挑选个别的点 进行排除,可以通过在数据表中打勾来选 择要排除的数据。 Exclude Sections 选定区域排除数据: Exclude X选择预测数据X要排除的数据 范围; Exclude Y选择响应数据Y要排除的数据 范围。
(3)其他数据预处理方法
(2)输入数据集
在输入数据之前,数据变量必须存在于 matlab的工作区间。可以通过load命令输 入变量。单击曲线拟合工具界面中的Data 按钮,打开Data对话框,在对话框中进行设 置,可以输入数据。
Data对话框
包括两个选项卡:Data Sets 和 Smooth. Data Sets选项卡: .Import workspace vectors 把向量输 入工作区,要注意的是变量必须具有相同的 维数,无穷大的值和不定值被忽略。 X data 用于选择观测数据 Y data 用于选择X的响应数据 Weight 用于选择权重,与响应数据相联系 的向量,如果没选择,默认值为1.
[p,s,mu]=polyfit(x,y,n) 返回多项式的系数,mu是一个二维向量 [u1,u2],u1=mean(x),u2=std(x),对 数据进行预处理 x=(x-u1)/u2
(2)Polyval函数
利用该函数进行多项式曲线拟合评价 y=polyval(p,x) 返回n阶多项式在x处的值,x可以是一个矩 阵或者是一个向量,向量p是n+1个以降序 排列的多项式的系数。
p( x) p1x p2 x
n
n1
pn x pn1
[p,s]=polyfit(x,y,n) 返回多项式系数向量p和矩阵s。s与 polyval函数一起用时,可以得到预测值的 误差估计。如数据y的误差服从方差为常数的 独立正态分布,polyval函数将生成一个误 差范围,其中包含至少50%的预测值.
0.0073
0.0193x 5 0.0110x 4 0.043x 3 0.0073x 2 0.2449x 0.2961
s=
R: [6x6 double] df: 0 normr: 2.3684e-016 mu = 0.1669 0.1499
自由度为 0 标准偏差为 2.3684e-016
例 >> x=[0 0.0385 0.0963 0.1925 0.2888 0.385]; >> y=[0.042 0.104 0.186 0.338 0.479 0.612]; >> [p,s,mu]=polyfit(x,y,5)
输出结果为: p= Columns 1 through 5 0.0193 -0.0110 -0.0430 0.2449 Column 6 0.2961 说明拟合的多项式为:
5个命令按钮
Data按钮:可输出、查看和平滑数据; Fitting按钮:可拟合数据、比较拟合曲线和 数据集; Exclude按钮:可以从拟合曲线中排除特殊 的数据点; Ploting按钮:在选定区间后,单击按钮, 可以显示拟合曲线和数据集; Analysis按钮:可以做内插法、外推法、微 分或积分拟合。
例:输入数据,采用matlab自带的文件census
census 有两个变量:cdate和pop。 cdate是一个年向量,包括1790-1990年, pop是对应年份的美国人口。 >> whos -file census Name Size Bytes Class Attributes cdate 21x1 168 double pop 21x1 168 double >> load census >> cftool(cdate,pop)
例:根据表中数据进行4阶多项式拟合
X 1 3 4 4 5 2 6 1 7 1 8 2 9 3 10 4 F(x) 10 5
>> >> >> >> >>
x=[1 3 4 5 6 7 8 9 10]; y=[10 5 4 2 1 1 2 3 4]; [p,s]=polyfit(x,y,4); y1=polyval(p,x); plot(x,y,'go',x,y1,'b--')
(ⅲ)Loess局部加权散点图平滑数据,采 用线性最小二乘法和二阶多项式拟合得到 的数据进行交换; (ⅳ)Savitzky-Golay 采用未加权的线 性最小二乘法过滤数据,利用指定阶数的 多项式得到的数据进行替换; (ⅴ)Span用于进行平滑计算的数据点的 数目; (ⅵ)Degree 用于Savitzky-Golay方 法拟合多项式的阶数。
1050
1000
950
900
850
800
750 20
30
40
50
Байду номын сангаас
60
70
80
90
100
例:已知年龄和运动能力的一组数据,试确定 二者的关系(根据图形指定次数)
年龄 17 第一人20.48 第二人24.35 19 21 23 25 27 29 25.13 26.15 30.0 26.1 20.3 19.35 28.11 26.3 31.4 26.92 25.7 21.3
.Smoothed data sets 对于所有平滑数 据集进行列表。可以增加平滑数据集,通 过单击Create smoothed data set按 钮,可以创建经过平滑的数据集。 .View按钮 打开查看数据集的GUI,以散点 图方式和工作表方式查看数据,可以选择 排除异常值的方法。 .Rename用于重命名。 .Delete可删去数据组。 .Save to workspace保存数据集。
(1)平滑数据 打开拟合工具箱,单击Data按钮,打开 Data对话框,选择Smooth选项卡
Smooth选项卡各选项的功能:
.Original data set 用于挑选需要拟合的 数据集; .Smoothed data set平滑数据的名称; .Method用于选择平滑数据的方法,每一个 相应数据用通过特殊的曲线平滑方法所计 算的结果来取代。平滑数据的方法包括: (ⅰ)Moving average 用移动平均值进 行替换; (ⅱ)Lowess局部加权散点图平滑数据, 采用线性最小二乘法和一阶多项式拟合得 到的数据进行替换;
>> x1=[17:2:29]; >> x=[x1 x1]; >> y=[20.48 25.13 26.15 30.0 26.1 20.3 19.35 24.35 28.11 26.3 31.4 26.92 25.7 21.3]; >> plot(x,y,'r+')
32
30
28
26
24
22
20
18 16
.Preview 对所选向量进行图形化预览 .Data set name 设置数据集的名称。工 具箱可以随即产生唯一的文件名,但用户 可以重命名。 .Data sets 选项以列表的形式显示所有拟 合的数据集。当选择一个数据集时,可以 对它做如下操作: .View 查看数据集,以图标形式和列表形 式,可以选择方法排除异常值; .Rename 重命名 .Delete 删除数据组
>> y=polyval(a,T) %计算多项式在某一 点处的值 y= 1.0e+003 * 0.7718 0.8132 0.8754 0.9502 1.0274 >> plot(T,R,'k+',T,y,'r*') >> hold on >> plot(T,y,'b') >> polyval(a,60) ans = 906.0212
一、数据预处理
在曲线拟合之前必须对数据进行预处理,去 除界外值、不定值和重复值,以减少人为误 差,提高拟合的精度。 数据预处理包括: (1)数据输入与查看 (2)数据的预处理 传输数据通过数据GUI来实现,查看数据点 通过曲线拟合工具的散点图来实现。
1.输入和查看数据集
(1)打开曲线拟合工具界面 通过cftool命令打开曲线拟合工具界面
10 9 8 7 6 5 4 3 2 1
1
2
3
4
5
6
7
8
9
10
>> poly2str(p,'t') ans = -0.0049945 t^4 + 0.11461 t^3 0.61143 t^2 - 1.1005 t + 11.5499
例:电阻和温度的关系数据如下
求60度时的电阻. 温度 20.5 32.7 51.0 73.0 95.7 电阻 765 826 873 942 1032 >> T=[20.5 32.7 51 73 95.7]; >> R=[765 826 873 942 1032]; >> a=polyfit(T,R,1); >> y=poly2str(a,'t') y= 3.3987 t + 702.0968