搜档网
当前位置:搜档网 › Matlab自编myfigure函数,快速输出figure图形曲线数据(原创)

Matlab自编myfigure函数,快速输出figure图形曲线数据(原创)

Matlab自编myfigure函数,快速输出figure图形曲线数据(原创)
Matlab自编myfigure函数,快速输出figure图形曲线数据(原创)

Matlab自编myfigure函数,快速输出figure图形曲线数据

L X

我们知道Matlab作图功能非常强大,但遗憾的是,Matlab在图形处理方面也有两个很大的不足,其一,Matlab保存的Figure图形,不能像origin图形一样,携带数据并可以在word/ppt/excel里面重新编辑;其二,Matlab没有提供快捷方式使我们能快速地从Figure图形中获取某特定曲线的数据,复制或保存,尽管在一般情况下,我们在WorkSpace中有变量,但是也显得很不方便。对于第一个不足,由于Matlab的固有属性,我们无法解决,第二个不足,我们可以自编函数解决。以下,本人新编了一个Figure函数,此函数可对已建立的Figure图形,添加两项一级菜单“输出数据”和“坐标范围”并在一级菜单下各有几项二级菜单,其功能为,1. 对Figure图形中的数据进行输出和保存输出的数据类型可以为xls、txt, 或者将数据重新返回到工作空间;2. 无须打开figure属性,即可快速对figure图形的坐标范围进行设置。

使用方法:将后面蓝色代码全部复制到m文件,并保存为“myfigure”,至于当前路径下。倾情奉献,如果觉得有参考或使用价值,请下载和评分哦~

示例:

x=linspace(0,2*pi,100);

y1=sin(x);y2=cos(x);

figure,plot(x,y1,'r.-',x,y2,'b*')

xlabel('x'),ylabel('y')

myfigure %运行本段代码,将得到图1

图1 运行myfigure对已建的Figure添加功能菜单,见图中绿色椭圆部分

1 坐标范围设置,如图2

图2 通过单击“坐标范围”菜单下的坐标设置对坐标范围快速设置

2 数据输出(至excel或txt或workspace),如图3

输出的数据格式,为若干列,一条曲线占两列,分别为x,y,多条则为x,y,x,y。

图3 单击“数据输出”下的输出至excel进行数据输出,

3 查看数据。注意,若Figure中有多条曲线,且数据长度不一样,则不能一次性输出数据,而是应该,先单击所需曲线,然后,在“数据输出”菜单下单击“查看数据”,得到数据表,如图4,用ctrl+c复制数据至excel中,从而完成输出。

图4 选择曲线,并单击“数据输出”下的查看数据,可得到数据表格,然后复制至excel 以下为myfigure代码。

function myfigure

%L X, 2014.01

f=gcf;

h=findobj(f,'Label','数据输出');

if isempty(h)

hm1=uimenu('Parent',f,'Label','数据输出');

uimenu(hm1,'Label','查看数据',...

'callback',@Read_data);

uimenu(hm1,'Label','输出至txt',...

'callback',@Save_Strain);

uimenu(hm1,'Label','输出至excel',...

'callback',@Opexcel);

uimenu(hm1,'Label','输出至WP',...

'callback',@OpWP);

hm2=uimenu('Parent',f,'Label','坐标范围');

uimenu(hm2,'Label','X坐标',...

'callback',@X_lim);

uimenu(hm2,'Label','Y坐标',...

'callback',@Y_lim);

end

function Save_Strain(~,~)

h_Line=get(gca,'Children');

Xdata=cell2mat(get(h_Line,{'Xdata'}));

Ydata=cell2mat(get(h_Line,{'Ydata'}));

Ydata=flipud(Ydata);

Data=[Xdata;Ydata];

L=size(Data,1);

formt=repmat('%f ',[1,L]);

%assignin('base','Data',Data') [filename,pathname]=uiputfile('*.txt');

if ~isequal(filename,0)

fid=fopen([pathname,filename],'w'); fprintf(fid,[formt,'\r\n'],Data);

a=fclose(fid);

if a==0

h=helpdlg('保存成功');

pause(0.5)

close(h)

end

end

function Opexcel(~,~)

h_Line=get(gca,'Children');

Xdata=cell2mat(get(h_Line,{'Xdata'})); Ydata=cell2mat(get(h_Line,{'Ydata'})); Ydata=flipud(Ydata);

Data=[Xdata;Ydata];

[filename,pathname]=uiputfile('*.xls');

if ~isequal(filename,0)

xlswrite([pathname,filename],Data')

h=helpdlg('保存成功');

pause(0.5)

close(h)

end

function OpWP(~,~)

h_Line=get(gca,'Children');

Xdata=cell2mat(get(h_Line,{'Xdata'})); Ydata=cell2mat(get(h_Line,{'Ydata'})); Ydata=flipud(Ydata);

Data=[Xdata;Ydata];

assignin('base','Data',Data')

h=helpdlg('已输出至Matlab工作空间!'); pause(0.5)

close(h)

function Read_data(~,~)

Xdata=cell2mat(get(gco,{'Xdata'}));

Ydata=cell2mat(get(gco,{'Ydata'}));

Xdata=Xdata';

Ydata=Ydata';

data=[Xdata,Ydata];

f=figure('NumberTitle','off','Menubar','none'); uitable('Parent',f,'Data',data);

function X_lim(~,~)

prompt={'起始值','终止值'};

dlg_title='请输入参数';

num_lines=1;

def = {'0','10'};

siz=inputdlg(prompt,dlg_title,num_lines,def);

if ~isempty(siz)

siz1=str2double(siz{1});

siz2=str2double(siz{2});

xlim([siz1 siz2])

end

function Y_lim(~,~)

prompt={'起始值','终止值'};

dlg_title='请输入参数';

num_lines=1;

def = {'0','10'};

siz=inputdlg(prompt,dlg_title,num_lines,def);

if ~isempty(siz)

siz1=str2double(siz{1});

siz2=str2double(siz{2});

ylim([siz1 siz2])

end

MATLAB曲线拟合的应用

MATLAB曲线拟合的应用 王磊品吴东 新疆泒犨泰克石油科技有限公司新疆油田公司准东采油厂信息所 摘要:1.阐述MATLAB数学分析软件的基本功能; 2.对MATLAB在生产数据分析中的应用进行了研究,指出曲线拟合的基本方法; 3.以实例阐明MATLAB与行业生产数据结合对生产数据进行分析的原理。 关键词:MATLAB;曲线拟合;插值 1.引言 在生产开发过程中,复杂的生产数据之间或多或少的存在着这样或者那样的联系,如何利用现今普及的计算机以及网络资源在最短的时间内找到这个联系,以指导我们的生产开发,这对于行业科研人员来说无疑是一个最为关心的问题。MATLAB矩阵分析软件,自推出以来,已成为国际公认的最优秀的数学软件之一,其范围涵盖了工业、电子、医疗以及建筑等各个领域,以其强大的科学计算功能使众多科研机构纷纷采用。 为此,本文从介绍MATLAB软件开始,以实例讲述如何使用MATLAB对生产开发数据进行计算与分析,从而达到高效、科学指导生产的目的。 2.MATLAB简介 MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。由于使用编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。 MATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。自问世以来, 就是以数值计算称雄。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使得MATLAB高度“向量化”。经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。美国许多大学的实验室都安装有供学习和研究之用。 MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列 MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制系统辨识、神经网络等。随着 MATLAB版本的不断升

matlab曲线拟合实例

曲线拟合 求二次拟合多项式 解:(一)最小二乘法MA TLAB编程: function p=least_squar(x,y,n,w) if nargin<4 w=1 end if nargin<3 n=1 end m=length(y); X=ones(1,m) if m<=n error end for i=1:n X=[(x.^i);X] end A=X*diag(w)*X';b=X*(w.*y)';p=(A\b)' 输入: x=[1 3 5 6 7 8 9 10]; y=[10 5 2 1 1 2 3 4] p=least_squar(x,y,2) 运行得: p = 0.2763 -3.6800 13.4320 故所求多项式为:s(x)=13.432-3.68x+0.27632x (二)正交多项式拟合MATLAB编程: function p=least_squar2(x,y,n,w) if nargin<4 w=1; end if nargin<3 n=1; end m=length(x); X=ones(1,m); if m<=n error end for i=1:n X=[x.^i;X]; end A=zeros(1,n+1);

A(1,n+1)=1; a=zeros(1,n+1); z=zeros(1,n+1); for i=1:n phi=A(i,:)*X;t=sum(w.*phi.*phi); b=-sum(w.*phi.*x.*phi)/t a(i)=sum(w.*y.*phi)/t; if i==1 c=0;else c=-t/t1; end t1=t for j=1:n z(j)=A(i,j+1); end z(n+1)=0 if i==1 z=z+b*A(i,:); else z=z+b*A(i,:)+c*A(i-1,:); end A=[A;z]; end phi=A(n+1,:)*X;t=sum(w.*phi.*phi); a(n+1)=sum(w.*y.*phi)/t; p=a*A; 输入: x=[1 3 5 6 7 8 9 10]; y=[10 5 2 1 1 2 3 4]; p=least_squar2(x,y,2) 运行得: b = -6.1250 t1 = 8 z = 0 1 0 b = -4.9328 t1 = 64.8750 z = 1.0000 -6.1250 0 p = 0.2763 -3.6800 13.4320 故所求多项式为:s(x)=13.432-3.68x+0.27632x

Matlab最小二乘法曲线拟合的应用实例

MATLAB机械工程 最小二乘法曲线拟合的应用实例 班级: 姓名: 学号: 指导教师:

一,实验目的 通过Matlab上机编程,掌握利用Matlab软件进行数据拟合分析及数据可视化方法 二,实验内容 1.有一组风机叶片的耐磨实验数据,如下表所示,其中X为使用时间,单位为小时h,Y为磨失质量,单位为克g。要求: 对该数据进行合理的最小二乘法数据拟合得下列数据。 x=[10000 11000 12000 13000 14000 15000 16000 17000 18000 19000 2 0000 21000 22000 23000]; y=[24.0 26.5 29.8 32.4 34.7 37.7 41.1 42.8 44.6 47.3 65.8 87.5 137.8 174. 2] 三,程序如下 X=10000:1000:23000; Y=[24.0,26.5,29.8,32.4,34.7,37.7,41.1,42.8,44.6,47.3,65.8,87.5,137.8,17 4.2] dy=1.5; %拟合数据y的步长for n=1:6 [a,S]=polyfit(x,y,n); A{n}=a;

da=dy*sqrt(diag(inv(S.R′*S.R))); Da{n}=da′; freedom(n)=S.df; [ye,delta]=polyval(a,x,S); YE{n}=ye; D{n}=delta; chi2(n)=sum((y-ye).^2)/dy/dy; end Q=1-chi2cdf(chi2,freedom); %判断拟合良好度 clf,shg subplot(1,2,1),plot(1:6,abs(chi2-freedom),‘b’) xlabel(‘阶次’),title(‘chi2与自由度’) subplot(1,2,2),plot(1:6,Q,‘r’,1:6,ones(1,6)*0.5) xlabel(‘阶次’),title(‘Q与0.5线’) nod=input(‘根据图形选择适当的阶次(请输入数值)’); elf,shg, plot(x,y,‘kx’);xlabel(‘x’),ylabel(‘y’); axis([8000,23000,20.0,174.2]);hold on errorbar(x,YE{nod},D{nod},‘r’);hold off title(‘较适当阶次的拟合’) text(10000,150.0,[‘chi2=’num2str(chi2(nod))‘~’int2str(freedom(nod))])

曲线拟合的最小二乘法matlab举例

曲线拟合的最小二乘法 学院:光电信息学院 姓名:赵海峰 学号: 200820501001 一、曲线拟合的最小二乘法原理: 由已知的离散数据点选择与实验点误差最小的曲线 S( x) a 0 0 ( x) a 1 1(x) ... a n n ( x) 称为曲线拟合的最小二乘法。 若记 m ( j , k ) i (x i ) j (x i ) k (x i ), 0 m (f , k ) i0 (x i )f (x i ) k (x i ) d k n 上式可改写为 ( k , jo j )a j d k ; (k 0,1,..., n) 这个方程成为法方程,可写成距阵 形式 Ga d 其中 a (a 0,a 1,...,a n )T ,d (d 0,d 1,...,d n )T , 、 数值实例: 下面给定的是乌鲁木齐最近 1个月早晨 7:00左右(新疆时间 )的天气预报所得 到的温度数据表,按照数据找出任意次曲线拟合方程和它的图像。 它的平方误差为: || 2 | 2 ] x ( f

(2008 年 10 月 26~11 月 26) F 面应用Matlab 编程对上述数据进行最小二乘拟合 三、Matlab 程序代码: x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]; %三次多项式拟合% %九次多项式拟合% %十五次多项式拟合% %三次多项式误差平方和 % %九次次多项式误差平方和 % %十五次多项式误差平方和 % %用*画出x,y 图像% %用红色线画出x,b1图像% %用绿色线画出x,b2图像% %用蓝色o 线画出x,b3图像% 四、数值结果: 不同次数多项式拟和误差平方和为: r1 = 67.6659 r2 = 20.1060 r3 = 3.7952 r1、r2、r3分别表示三次、九次、十五次多项式误差平方和 拟和曲线如下图: a 仁polyfit(x,y,3) a2= polyfit(x,y,9) a3= polyfit(x,y,15) b1= polyval(a1,x) b2= polyval(a2,x) b3= polyval(a3,x) r1= sum((y-b1).A 2) r2= sum((y-b2).A2) r3= sum((y-b3).A2) plot(x,y,'*') hold on plot(x,b1, 'r') hold on plot(x,b2, 'g') hold on plot(x,b3, 'b:o')

MATLAB中简单的数据拟合方法与应用实例①

MATLAB中简单的数据拟合方法与应用实例 仅供努力学习matlab的同学们参考参考,查阅了M多资料,总结了以下方法 按步骤做能够基本学会matlab曲线拟合的 1.1数据拟合方法 1.1.1多项式拟合 1.多项式拟合命令 polyfit(X,Y,N):多项式拟合,返回降幂排列的多项式系数。 Polyval(P,xi):计算多项式的值。 其中,X,Y是数据点的值;N是拟合的最高次幂;P是返回的多项式系数;xi是要求的横坐标 拟合命令如下: x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; P=polyfit(x,y,3); xi=0:.2:10; yi=polyval(P,xi); plot(xi,yi,x,y,'r*'); 拟合曲线与原始数据如图1-1 图1-1 2图形窗口的多项式拟合 1)先画出数据点如图1-2 x=[1 2 3 4 5 6 7 8 9]; y=[9 7 6 3 -1 2 5 7 20]; plot(x,y,'r*');

图1-2 2)在图形窗口单击Tools—Basic Fitting,如图1-3勾选. 图1-3 图1-3右方分别是线性、二阶、三阶对数据进行多项式拟合。下面的柱状图显示残差,可以看出,三阶多项式的拟合效果是最好的。 1.1.2指定函数拟合 已知M组数据点和对应的函数形式f t (t)=acos(kt)e X Y 编写M文件:

syms t x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15]; y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); cfun=fit(x,y,f) xi=0:.1:20; yi=cfun(xi); plot(x,y,'r*',xi,yi,'b-'); 图1-4 运行程序,在命令窗口可达到以下运行结果,图像如图1-4 Warning: Start point not provided, choosing random start point. > In fit>handlewarn at 715 In fit at 315 In Untitled2 at 5 cfun = General model: cfun(t) = a*cos(k*t)*exp(w*t) Coefficients (with 95% confidence bounds): a = 0.9987 ( 0.9835, 1.014) k = 1.001 (0.9958, 1.006) w = -0.2066 (-0.2131, -0.2002) 从结果可以看出,拟合的曲线为: (0.2066) ()0.9987cos(1.001)*t f t t e- =。拟 合曲线给出了数据大致趋势,并给出了各参数的置信区间。

matlab曲线拟合2010a演示

2010a版本曲线拟合工具箱 一、单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的Matlab R2007b 来简单介绍如何使用这个工具箱。 假设我们要拟合的函数形式是y=A*x*x + B*x, 且A>0,B>0。 1、在主命令输入数据: x=233.8:0.5:238.8; y=[235.148 235.218 235.287 235.357 235.383 235.419 235.456 235.49 235.503 235.508 235.536]; 2、启动曲线拟合工具箱 cftool(x,y) 3、进入曲线拟合工具箱界面“Curve Fitting tool” 如图 (1)利用X data和Y data的下拉菜单读入数据x,y,可在Fit name修改数据集名,这时会自动画出数据集的曲线图;

(2)在红色区域选择拟合曲线类型 工具箱提供的拟合类型有: ?Custom Equations:用户自定义的函数类型 ?Exponential:指数逼近,有2种类型,a*exp(b*x) 、a*exp(b*x) + c*exp(d*x) ?Fourier:傅立叶逼近,有7种类型,基础型是a0 + a1*cos(x*w) + b1*sin(x*w) ?Gaussian:高斯逼近,有8种类型,基础型是a1*exp(-((x-b1)/c1)^2) ?Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubicspline、shape-preserving ?Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree~ ?Power:幂逼近,有2种类型,a*x^b 、a*x^b + c ?Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree~;此外,分子还包括constant型 ?Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思) ?Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是a1*sin(b1*x + c1) ?Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b) 在results一栏看结果

MATLAB数据拟合例子

MATLAB数据拟合例子(一次函数、指数函数、双曲线) (2010-06-03 01:44:30)转载▼ 分类:数学工具 标签:杂 谈 一次函数:(a+bx = y) %先求出拟合函数 format long; x = [2001 2002 2003 2004 2005 2006 2007 2008 2009]; y = [32.2 31.3 29.7 28.6 27.5 26.1 25.3 23.7 22.7]; d = [1 1 1 1 1 1 1 1 1]; a=[d;x]; b = a*y'; a=a*a'; c=a\b c = 1.0e+003 * 2.436797222221444 -0.001201666666666 %所以,拟合函数为 y = 1.0e+003 *(2.436797222221444 - 0.001201666666666*x %根据拟合函数求估测值 format short; x = [2010, 2011, 2012, 2013, 2014] 1.0e+003 *( 2.436797222221444 - 0.001201666666666*x) ans = 21.4472 20.2456 19.0439 17.8422 16.6406

指数函数:( y = exp(a + b*x)) >> x = [2001 2002 2003 2004 2005 2006 2007 2008 2009]; y = [21.5 15.9 11.8 8.7 6.5 4.8 3.5 2.6 2.0]; y=log(y'); d = [1 1 1 1 1 1 1 1 1]; a=[d;x]; b = a*y; a=a*a'; c=a\b c = 601.9448 -0.2993 %所以,拟合函数为 y = exp(601.9448 - 0.2993*x) %根据拟合函数求估测值 >> x = [2010, 2011, 2012, 2013, 2014] exp(601.9448 - 0.2993*x) ans = 1.4216 1.0539 0.7813 0.5792 0.4294 双曲线:(1/y = a + b/x) format long;

matlab数据拟合,有图有例子,一看就会

Matlab CFTool使用简介: 单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类 型的线性、非线性曲线拟合。下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。 假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0 。 1、在命令行输入数据: 》x=[你的X轴数据]; 》y=[你的Y轴数据]; 》cftool 可以将上面三个行建立一个M文件,以便后面进行数据拟合时可以直接使用,点击运行即可进入曲线拟合工具箱界面“Curve Fitting tool” (1)点击“Data”按钮,弹出“Data”窗口; (2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图; (3)点击“Fitting”按钮,弹出“Fitting”窗口; (4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有: ?Custom Equations:用户自定义的函数类型 ?Exponential:指数逼近,有2种类型,a*exp(b*x) 、a*exp(b*x) + c*exp(d*x) ?Fourier:傅立叶逼近,有7种类型,基础型是a0 + a1*cos(x*w) + b1*sin(x*w) ?Gaussian:高斯逼近,有8种类型,基础型是a1*exp(-((x-b1)/c1)^2) ?Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving ?Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~ ?Power:幂逼近,有2种类型,a*x^b 、a*x^b + c ?Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型 ?Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思) ?Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是a1*sin(b1*x + c1) ?Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b) 选择好所需的拟合曲线类型及其子类型,并进行相关设置: ——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数; ——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。

MATLAB在非线性曲线拟合中的应用研究

MATLAB 在非线性曲线拟合中的应用小结 摘要:归纳总结了非线性曲线拟合的方法、求解步骤和上机操作过程 关键词:曲线拟合非线性MAT LAB 正文: 1.曲线拟合的基本原理 已知一组测定的数据(例如N个点(xi,yi )去求得自变量x和因变量y 的一个近似解析表达式y=φ(x)。若记误差δi=φ(xi )-yi ,i=1,2,…N ,则要使误差的平方和最小,即要求: ∑==N i i Q 12δ 为最小,这就是常用的最小二乘法原理。 2 .MATLAB 曲线拟合的相关方法 2.1.函数形式: (1)多项式拟合函数po ly fit ,调用格式为: p =polyfit (x ,y,n ) 其中x ,y 为参与曲线拟合的实验数据,n为拟合多项式的次数,函数返回值为拟合多项式的系数(按降幂排列)。n =1时,就为线性拟合。 例1:给出表1数据,试用最小二乘法求一次和二次拟合多项式。 表1 数据 在M AT LAB 命令窗口中输入: cle ar ; cl os e; x=-1:0.25:1; y=[-0.2209,0.3295,0.8826,1.4392,2.0003,2.5645,3.1334,3.7061,4.2836] p1=p olyfit(x,y ,1) p2=po lyf it(x,y,2) y 1=polyva l(p 1,x); y 2=p oly val(p2,x); pl ot(x,y,'+',x,y1,'r:',x ,y 2,'k-.')

运行结果: 拟合多项式为:y*=2.0516+2.0131和y *=0.0313x2+2.2516x +2.20001 (2)非线性数据拟合函数lsq cu rvefit 调用格式为: c=ls qcur vefi (t 'f un',x0,xdata,yd ata ) 其中'fun'为拟合函数的M-函数文件名,x0为初始向量,x data ,ydat a为参与曲线拟合的实验数据。函数返回值c为非线性函数fun 的拟合系数。 例2:2004年全国大学生数学建模竞赛C 题(酒后驾车)中给出某人在短时间内喝下两瓶啤酒后,间隔一定的时间测量他的血液中酒精含量y (毫克/百毫升),得到数据如表2。 表2 酒精含量与饮酒时间的实验数据 通过建立微分方程模型得到短时间内喝酒后血液中 酒精浓度与时间的关系为: )(321t c t c e e c y ---= (2) 根据实验数据,利用非线性拟合函数ls qcurve fit ,确定模型(2)式中的参数c 1,c 2,c3。求解过程为: 先编写一个M -函数文件Example2_1: fun ction f=Ex ample2_1(c,td ata) f =c(1)*(ex p(-c(2)*t data)-exp (-c(3)*t da ta )); 保存后,在命令窗口中输入: clea r tdata=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16]; 时间(小时) 0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 酒精含量 30 68 75 82 82 77 68 68 58 51 50 41 时间(小时) 6 7 8 9 1 16 酒精含量 38 35 28 25 18 15 12 10 7 7 4

Matlab 曲面插值和拟合

得用拟合或插值。 常用的拟合有多项式拟合POLYFIT 插值有INTERP1,SPLINE,LAGR1等。。。 在Matlab中,用于曲线和曲面平滑的方法与函数很多,曲线平滑可用smooth和smoothts 等,三维数据可用smooth3,另外样条工具箱中也有不少可用于平滑数据的函数,如三次样条csaps和B样条spaps等。 matlab中三维作图功能总结2007-12-09 11:29plot3 画三维坐标中的点,连线,但只能顺序连接。 surf(X,Y,Z) 用X和Y定义x-y坐标网格,Z定义网格上每一点的高度,来生成三维曲面。如:[X,Y,Z] = peaks(30);surf(X,Y,Z) mesh,和surf一样,只不过生成的是网格。 surface 用法也一样。 fill3 只能生成平面。重点在色彩。 [X,Y,Z]=meshgrid(1:3,1:3,1:5) 生成3*3*5的三维网格,X,Y,Z都是3*3*5三维矩阵。 这只是生成坐标网格,还需要一个V(X,Y,Z)定义图形。 ndgrid 生成三维以上网格时用。 smooth3 作用于体数据,使光滑 isosurface X,Y,Z如meshgrid的定义。 V中元素为1则表示存在,即要显示。但要连成片的1才会显示。 V中元素如a>1时,表示要显示的这个点离上方的网格距离是单位距离的1/a 圆滑程度由isovalue决定,0.9999是最硬,越接近0越圆滑。可同时配合isocaps. isocaps 生成并显示图形与坐标系交界处的平面。 patch 接收isosuface返回的参数,生成图形。

Matlab 曲面插值和拟合 附录: Matlab 样条工具箱(Spline ToolBox)【信息来源教师博客】 Matlab样条工具箱中的函数提供了样条的建立,操作,绘制等功能; 一. 样条函数的建立 第一步是建立一个样条函数,曲线或者曲面。这里的样条函数,根据前缀,分为4类: cs* 三次样条 pp* 分段多项式样条,系数为t^n的系数 sp* B样条, 系数为基函数B_n^i(t)的系数 rp* 有理B样条 二. 样条操作 样条操作包括:函数操作:求值,算术运算,求导求积分等等 节点操作:主要是节点重数的调节,设定,修改等等 附:样条工具箱函数 1. 三次样条函数 csapi 插值生成三次样条函数 csape 生成给定约束条件下的三次样条函数 csaps 平滑生成三次样条函数 cscvn 生成一条内插参数的三次样条曲线 getcurve 动态生成三次样条曲线 2. 分段多项式样条函数

matlab拟合实例

散点图 >> x=0:0.1:1; >> y=[0.99567,0.99334,1.0413,1.0929,1.1485,1.2619,1.3719,1.4896,1.6433,1.8117,.9981]; >> plot(x,y,'ok'),title('散点图') 多项式拟合 >> x=0:0.1:1; >> y=log(1+x); >> P=polyfit(x,y,3) 对观测数据x,y作3阶多项式拟合 P = 0.1079 -0.3974 0.9825 0.0004 >> xi=0:0.1:1; >> yi=polyval(P,xi); >> plot(x,y,'or'); >> hold on; >> plot(xi,yi,'b'); >> plot(xi,log(1+xi),'g'); >> plot(xi,log(1+xi),'y'); >> plot(xi,log(1+xi),'g'); >> xlabel('x'); >> ylabel('y'); >> legend('采样数据','拟合曲线','精确曲线')

指数函数拟合 >> x=0:0.01:0.99; >> y=1-sqrt(x); >> P=polyfit(x,log(y),1) P = -3.3761 0.2071 >> yi=exp(polyval(P,x)); >> plot(x,y,'.k') >> plot(x,y,'.k') >> hold on >> plot(x,yi,'g') >> xlabel('x') >> ylabel('y') >> legend('采样数据','拟合曲线'); >> hold off;

matlab做拟合曲线应用方法实例

matlab曲线拟合函数用法以及例子 在运行MATLAB编程进行数据的处理过程当中,我们常常用到matlab曲线拟合,但是工具箱由于需要人工交互,得到的拟合结果,需要人工的去提取,再输入,所以,工具箱拟合结果十分不适合调用,以及继续下面的操作,所以我们需要用到matlab曲线拟合函数,并且以最常用的多项式拟合函数为例作为matlab曲线拟合例子,进行详细介绍。 工具/原料 MATLAB matlab曲线拟合 1. 1 数据准备: 关于MATLAB曲线拟合,为了相互统一,采用下面的数据: x=[0 0.3000 0.6000 0.9000 1.2000 1.5000 1.8000 2.1000 2.4000 2.7000 3.0000] y=[2.0000 2.3780 3.9440 7.3460 13.2320 22.2500 35.0480 52.2740 74.5760 102.6020 137.0000] 由函数y=4*x^3+3*x^2+2 产生。

2. 2 函数命令拟合: MATLAB为我们提供了多项式拟合函数命令polyfit,下面我们就用这个函数命令进行拟合。 在MATLAB主窗口中输入 y1=polyfit(x,y,3),回车 我们会看到下面结果: y1 = 4.0000 3.0000 0.0000 2.0000 3. 3 函数的说明: y1=polyfit(x,y,N),这里函数polyfit第一个参数传递的是拟合数据的自变量,第二个参数是因变量,第三个参数是拟合多项式的阶数,这个由我们给定。如下图。我们可以给定不同的N,运用不同的多项式进行拟合。 输出结果: 在上面的例子中我们看到输出的结果是: y1 =

曲线拟合的最小二乘法matlab举例

曲线拟合的最小二乘法 学院:光电信息学院 姓名:赵海峰 学号:200820501001 一、曲线拟合的最小二乘法原理: 由已知的离散数据点选择与实验点误差最小的曲线 )(...)()()(1100x a x a x a x S n n ???+++= 称为曲线拟合的最小二乘法。 若记 ),()()(),(0 i k i j m i i k j x x x ??ω??∑== k i k i m i i k d x x f x f ≡=∑=)()()(),(0 ?ω? 上式可改写为),...,1,0(;),(n k d a k j n o j j k -=∑=??这个方程成为法方程,可写成距阵 形式 d Ga = 其中,),...,,(,),...,,(1010T n T n d d d d a a a a == ???? ????????=),(),(),()(),(),(),(),(),(10 1110101000n n n n n n G ?????????????????? 。 它的平方误差为:.)]()([)(||||20 22i i m i i x f x S x -= ∑=ωδ 二、数值实例: 下面给定的是乌鲁木齐最近1个月早晨7:00左右(新疆时间)的天气预报所得 到的温度数据表,按照数据找出任意次曲线拟合方程和它的图像。

下面应用Matlab编程对上述数据进行最小二乘拟合 三、Matlab程序代码: x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]; a1=polyfit(x,y,3) %三次多项式拟合% a2= polyfit(x,y,9) %九次多项式拟合% a3= polyfit(x,y,15) %十五次多项式拟合% b1=polyval(a1,x) b2=polyval(a2,x) b3=polyval(a3,x) r1= sum((y-b1).^2) %三次多项式误差平方和% r2= sum((y-b2).^2) %九次次多项式误差平方和% r3= sum((y-b3).^2) %十五次多项式误差平方和% plot(x,y,'*') %用*画出x,y图像% hold on plot(x,b1, 'r') %用红色线画出x,b1图像% hold on plot(x,b2, 'g') %用绿色线画出x,b2图像% hold on plot(x,b3, 'b:o') %用蓝色o线画出x,b3图像% 四、数值结果: 不同次数多项式拟和误差平方和为: r1 = 67.6659 r2 = 20.1060 r3 = 3.7952 r1、r2、r3分别表示三次、九次、十五次多项式误差平方和。 拟和曲线如下图:

MATLAB曲线拟合

Mathworks Tech-Note 1508 曲线拟合向导 1.介绍 2. Mathworks 产品的曲线拟合特色 a.曲线拟合工具箱(Curve Fitting Toolbox) b.Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱) c.线性曲线拟合 d.非线性曲线拟合 3.加权曲线拟合方法 a.曲线拟合工具箱 b.统计工具箱 c.优化工具箱 4.利用曲线拟合工具箱提高曲线拟合结果 5.其他的相关资料 第1节:简介 MA TLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。 第2节:MathWorks产品的曲线拟合特色 MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱――曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MA TLAB可以用于曲线拟合的内建函数的详细特征。 a.曲线拟合工具箱 曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MA TLAB建立的图形用户界面(GUIs)和M文件函数。

?利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 ?通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。 曲线拟合工具箱提供了如下功能: ?数据回归,譬如截面(?sectioning)与平滑; ?标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合以及稳健(robust)拟合; ?根据诸如R2以及误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。 b. MATLAB内建函数与具有曲线拟合能力的其他工具箱 除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。 c.利用MATLAB内建函数进行线性曲线拟合 函数描述 polyfit 用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项式系数,P(X(I))~=Y(I),在最小二乘意义上。 \ 反斜线或者矩阵阵左除。如果A是一个方阵,A\B 基本上与 inv(A)*B一致的,是采用的不同计算方式而已。 polyval 在给定点计算多项式的值 corrcoef 计算两个向量的相关系数。它可以与polyfit和polyval函数一起用来在实际数据和拟合输出之间计算R2相关系数 下面给出一个利用corref计算R2值的例子: load census [p,s]=polyfit(cdate,pop,2); Output=polyval(p,cdate); Corrolation=corroef(cate,Output); cdate 与它自身很好的相关,同样的Output也与它自身很好相关。反对角线上元素是

matlab曲线拟合向导

MATLAB曲线拟合向导 主要内容: 1.介绍 2.Mathworks 产品的曲线拟合特色 a.曲线拟合工具箱(Curve Fitting Toolbox) b.Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱) c.线性曲线拟合 d.非线性曲线拟合 3.加权曲线拟合方法 a.曲线拟合工具箱 b.统计工具箱 c.优化工具箱 4.利用曲线拟合工具箱提高曲线拟合结果 5.其他的相关资料 第1节:简介 MATLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。 第2节:MathWorks产品的曲线拟合特色 MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱??曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MATLAB可以用于曲线拟合的内建函数的详细特征。 a.曲线拟合工具箱 曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MATLAB建立的图形用户界面和M文件函数。 ?利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 ?通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。 曲线拟合工具箱提供了如下功能: ?数据回归,譬如截面(sectioning)与平滑; ?标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合 以及稳健(robust)拟合; ?根据诸如R2 以及误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。 b.MATLAB内建函数与具有曲线拟合能力的其他工具箱 除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。 c.利用MATLAB内建函数进行线性曲线拟合

MATLAB曲线拟合(含实例)

[matlab曲线拟合(含实例)] matlab曲线拟合-非常好非常全面的介绍M拟合的参考资料 Mathworks Tech-Note1508曲线拟合向导 1.介绍 2.Mathworks产品的曲线拟合特色 a.曲线拟合工具箱(Curve Fitting Toolbox) b.Matlab内建函数与其他的带有曲线拟合能力的附加产品(工具箱)c.线性曲线拟合 d.非线性曲线拟合 3.加权曲线拟合方法 a.曲线拟合工具箱 b.统计工具箱 c.优化工具箱 4.利用曲线拟合工具箱提高曲线拟合结果 5.其他的相关资料 第1节:简介 MATLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。 第2节:MathWorks产品的曲线拟合特色 MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB 也有一个开放的工具箱――曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MATLAB可以用于曲线拟合的内建函数的详细特征。

a.曲线拟合工具箱 曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MATLAB建立的图形用户界面(GUIs)和M文件函数。 曲线拟合向导Genial@USTC2004-4-18 ?利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 ?通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。 曲线拟合工具箱提供了如下功能: ?数据回归,譬如截面(?sectioning)与平滑; ?标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合以及稳健(robust)拟合; ?根据诸如R2以及误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。 b.MATLAB内建函数与具有曲线拟合能力的其他工具箱 除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。 c.利用MATLAB内建函数进行线性曲线拟合 函数描述 polyfit用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项 式系数,P(X(I))~=Y(I),在最小二乘意义上。 \反斜线或者矩阵阵左除。如果A是一个方阵,A\B基本上与 inv(A)*B一致的,是采用的不同计算方式而已。 polyval在给定点计算多项式的值 corrcoef计算两个向量的相关系数。它可以与polyfit和polyval函数一

相关主题