MATLAB曲线拟合工具箱1曲线拟合定义•在实际工程应用和科学实践中,经常需要寻求•两个(或多个)变量间的关系,而实际去只能•通过观测得到一些离散的数据点。针对这些分•散的数据点,运用某种你和方法生成一条连续•的曲线,这个过程称为曲线拟合。•曲线拟合可分为:•(1)参数拟合----最小二乘法•(2)非参数拟合----插值法2一、数据预处理•在曲线拟合之前必须对数据进行与处理,去•除界外值、不定值和重复值,以减少认为误•差,提高拟合的精度。•数据预处理包括:•(1)数据输入与查看•(2)数据的预处理•传输数据通过数据GUI来实现,查看数据点•通过曲线拟合工具的散点图来实现。31.输入和查看数据集•(1)打开曲线拟合工具界面•通过cftool命令打开曲线拟合工具界面45个命令按钮•Data按钮:可输出、查看和平滑数据;•Fitting按钮:可拟合数据、比较拟合曲线和数据集;•Exclude按钮:可以从拟合曲线中排除特殊的数据点;•Ploting按钮:在选定区间后,单击按钮,可以显示拟合曲线和数据集;•Analysis按钮:可以做内插法、外推法、微分或积分拟合。5(2)输入数据集•在输入数据之前,数据变量必须存在于•matlab的工作区间。可以通过load命令输•入变量。单击曲线拟合工具界面中的Data•按钮,打开Data对话框,在对话框中进行设•置,可以输入数据。6Data对话框•包括两个选项卡:DataSets和Smooth.•DataSets选项卡:•.Importworkspacevectors把向量输•入工作区,主要以变量必须具有相同的维数•,无穷大的值和不定值被忽略。•Xdata用于选择观测数据•Ydata用于选择X的响应数据•Weight用于选择权重,与响应数据相联系的向量,如果没选择,默认值为1.7•.Preview对所选向量进行图形化预览•.Datasetname设置数据集的名称。工具箱可以随即产生唯一的文件名,但用户可以重命名。•.Datasets选项以列表的形式显示所有拟合的数据集。当选择一个数据集时,可以对它做如下操作:•.View查看数据集,以图标形式和列表形式,可以选择方法排除异常值;•.Rename重命名•.Delete删去数据组8例:输入数据,采用matlab自带的文件census•census有两个变量:cdate和pop。cdate是一个年向量,包括1790-1990•年,间隔为10年;•pop是对应年份的美国人口。•whos-filecensus•NameSizeBytesClassAttributes•cdate21x1168double•pop21x1168double•loadcensus•cftool(cdate,pop)9散点图10•单击Data按钮11•在Xdata和Ydata两个下拉式列表框中选•择变量名,将在Data对话框中显示散点图的•预览效果:12•当选择Datasets列表框中的数据集时,单•击View按钮,打开ViewDataSet对话框工作表方式132.数据的预处理•在曲线拟合工具箱中,数据的预处理主要包•括平滑法、排除法和区间排除法等。•(1)平滑数据•打开拟合工具箱,单击Data按钮,打开•Data对话框,选择Smooth选项卡1415Smooth选项卡各选项的功能:•.Originaldataset用于挑选需要拟合的数据集;•.Smootheddataset平滑数据的名称;•.Method用于选择平滑数据的方法,每一个相应数据用通过特殊的曲线平滑方法所计算的结果来取代。平滑数据的方法包括:•(ⅰ)Movingaverage用移动平均值进行替换;•(ⅱ)Lowess局部加权散点图平滑数据,采用线性最小二乘法和一阶多项式拟合得到的数据进行替换;16•(ⅲ)Loess局部加权散点图平滑数据,采用线性最小二乘法和二阶多项式拟合得到的数据进行交换;•(ⅳ)Savitzky-Golay采用未加权的线性最小二乘法过滤数据,利用指定阶数的多项式得到的数据进行替换;•(ⅴ)Span用于进行平滑计算的数据点的数目;•(ⅵ)Degree用于Savitzky-Golay方法拟合多项式的阶数。17•.Smootheddatasets对于所有平滑数据集进行列表。可以增加平滑数据集,通过单击Createsmootheddataset按钮,可以创建经过平滑的数据集。•.View按钮打开查看数据集的GUI,以散点图方式和工作表方式查看数据,可以选择排除异常值的方法。•.Rename用于重命名。•.Delete可删去数据组。•.Savetoworkspace保存数据集。18(2)排除法和区间排除法•排除法是对数据中的异常值进行排除。•区间排除法是采用一定的区间去排除那些用•于系统误差导致偏离正常值的异常值。•在曲线拟合工具中单击Exclude按钮,可以•打开Exclude对话框1920•Exclusionrulename指定分离规则的名称•Existingexclusionrules列表产生的文件•名,当你选择一个文件名时,可以进行如下操•作:•Copy复制分离规则的文件;•Rename重命名;delete删去一个文件;•View以图形的形式展示分离规则的文件。•Selectdataset挑选需要操作的数据集;•Excludegraphically允许你以图形的形式去除异常值,排除个别的点用“×”标记。21•Checktoexcludepoint挑选个别的点进行排除,可以通过在数据表中打勾来选择要排除的数据。•ExcludeSections选定区域排除数据:•ExcludeX选择预测数据X要排除的数据范围;•ExcludeY选择响应数据Y要排除的数据范围。22(3)其他数据预处理方法•其他的预处理方法不便通过曲线拟合工具箱•来完成,主要包括两部分:•响应数据的转换和去除无穷大、缺失值和异•常值。•响应数据的转换一般包括对数转换、指数转•换,用这些转换可以使非线性的模型线性•化,便于曲线拟合。变量的转换一般在命令•行里实现,然后把转换后的数据输入曲线拟•合工具箱,进行拟合。23•无穷大、不定值在曲线拟合中可以忽略,如•果想把他们从数据集中删除,可以用isinf和•isnan置换无穷大值和缺失值。24二、曲线拟合•Matlab提供两种曲线拟合方法:•(1)以函数的形式,使用命令对数据进行拟合。这种方法比较繁琐,需要对拟合函数有比较好的了解。•(2)用图形窗口进行操作,具有简便、快速,可操作性强的优点。251.多项式拟合函数•(1)Polyfit函数•P=polyfit(x,y,n)•用最小二乘法对数据进行拟合,返回n次多项式的系数,并用降序排列的向量表示,长度为n+1.1121)(nnnnpxpxpxpxp•[p,s]=polyfit(x,y,n)•返回多项式系数向量p和矩阵s。s与•polyval函数一起用时,可以得到预测值的•误差估计。如数据y的误差服从方差为常数的•独立正态分布,polyval函数将生成一个误•差范围,其中包含至少50%的预测值.27•[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个以降序•排列的多项式的系数。29•.y=polyval(p,x,[],mu)•用x=(x-u1)/u2代替x,其中mu是一个•二维向量[u1,u2],•u1=mean(x),u2=std(x),通过这•样处理数据,使数据合理化。30•[y,delta]=polyval(p,x,s)•[y,delta]=polyval(p,x,s,mu)•产生置信区间y±delta。如果误差结果服从•标准正态分布,则实测数据落在y±delta区•间内的概率至少为50%。31•例•x=[00.03850.09630.19250.28880.385];•y=[0.0420.1040.1860.3380.4790.612];•[p,s,mu]=polyfit(x,y,5)32•输出结果为:•p=•Columns1through5•0.0193-0.0110-0.04300.00730.2449•Column6•0.2961•说明拟合的多项式为:2961.02449.00073.0043.00110.00193.02345xxxxxs=R:[6x6double]df:0normr:2.3684e-016mu=0.16690.1499自由度为0标准偏差为2.3684e-016例:根据表中数据进行4阶多项式拟合X1345678910F(x)1054211234x=[1345678910];y=[1054211234];[p,s]=polyfit(x,y,4);y1=polyval(p,x);plot(x,y,'go',x,y1,'b--')1234567891012345678910poly2str(p,'t')ans=-0.0049945t^4+0.11461t^3-0.61143t^2-1.1005t+11.549936例:电阻和温度的关系数据如下•求60度时的电阻.•温度20.532.751.073.095.7•电阻7658268739421032•T=[20.532.7517395.7];•R=[7658268739421032];•a=polyfit(T,R,1);•y=poly2str(a,'t')•y=•3.3987t+702.096837•y=polyval(a,T)%计算多项式在某一点处的值•y=•1.0e+003*•0.77180.81320.87540.95021.0274•plot(T,R,'k+',T,y,'r*')•holdon•plot(T,y,'b')•polyval(a,60)•ans=•906.02123820304050607080901007508008509009501000105039•例:已知年龄和运动能力的一组数据,试确定二者的关系(根据图形指定次数)•x1=[17:2:29];•x=[x1x1];•y=[20.4825.1326.1530.026.120.319.3524.3528.1126.331.426.9225.721.3];•plot(x,y,'r+')年龄17192123252729第一人20.4825.1326.153026.120.319.35第二人24.3528.1126.331.426.9225.721.3401618202224262830182022242628303241•a=polyfit(x,y,2)•a=•-0.20038.9782-72.2150•poly2str(a,'x')•ans=•-0.20031x^2+8.9782x-72.215•x1=17:0.1:29;•y1=-0.20031*x1.^2+8.9782*x1-72.215;•holdon;plot(x1,y1,'b')421618202224262830182022242628303243数据拟合函数表cfit产生拟合的目标fit用库模型、自定义模型、平滑样条或内插方法来拟合数据fitoptions产生或修改拟合选项fittype产生目标的拟合形式cflibhelp显示一些信息,包括库模型、三次样条和内插方法等。disp显示曲线拟合工具的信息get返回拟合曲线的属性set对于拟合曲线显示属性值数据拟合函数表excludedata指定不参与拟合的数据smooth平滑响应数据confint计算拟合系数估计值的置信区间边界differen