matlab 曲线拟合问题
最好有完整的代码哦 展开
12345678910111213141516clc;clear allx=[1,2,3,4,5,6,7];y=[3,5,6,6.5,6.1,3.5,4];%以下求拟合I0=ones(length(x),1);I1=x;I2=x.^3;I=[I0 I1' I2'];a=(I'*I)\(I'*y');y1=a(1)+a(2)*x+a(3)*x.^3;plot(x,y,'r--')hold onplot(x,y1,'g-.')legend('拟合之前','拟合之后')fprintf('三个系数(c,b,a):\n')disp(a)
结果:
三个系数(c,b,a):
2.1098
1.4027
-0.0254
>>
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
function shiyan1
xdata = [ 12.9,8.5,6.1,3.7,2.5 ];
ydata = [ 16, 25, 33, 46, 55 ];
a0 = ones( 1, 3 ); % 初始化参数
[ a, resnorm ] = lsqcurvefit( @subfun, a0, xdata, ydata )
end
function y = subfun( a, x )
y = 1 ./ ( a( 1 ) * x + a( 2 ) ) + a( 3 ) * x;
end
你所要求得a b c 就是代码里a的第一、第二和第三个数