matlab拟合离散点曲线有X=( 0.48 ,1.58 ,2.428,3.032,3.36,3.368,2.92,2.172 ,1.368 ,0.512 ,-0.436 ,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48 ) Y=(0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 23:44:44

matlab拟合离散点曲线有X=( 0.48 ,1.58 ,2.428,3.032,3.36,3.368,2.92,2.172 ,1.368 ,0.512 ,-0.436 ,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48 ) Y=(0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0
matlab拟合离散点曲线
有X=( 0.48 ,1.58 ,2.428,3.032,3.36,3.368,2.92,2.172 ,1.368 ,0.512 ,-0.436 ,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48 ) Y=(0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0.472,-0.6064,-0.7864,-0.2804,-0.752,-1.8572 ,-2.39,-2.24,-1.766,-0.8828,-0.0572 ,0.3136,0.472,0.6064,0.7864,0.752 )两组数据,画出组成的曲线,怎样用MATLAB将这条曲线拟合成椭圆方程,然后求出这个椭圆的面积,得到这个椭圆的主轴和X轴的夹角.并且得到这个椭圆的X最大值对应的X,Y坐标.

matlab拟合离散点曲线有X=( 0.48 ,1.58 ,2.428,3.032,3.36,3.368,2.92,2.172 ,1.368 ,0.512 ,-0.436 ,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48 ) Y=(0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0
问题分析
1、从数据看,与椭圆的形状吻合不是很好,尤其是短轴部分明显凹入.
2、拟合的基本思路是,使用长半轴a、短半轴b和倾角Q作为参数描述椭圆方程(进一步还可以考虑圆心不在原点,再增加两个参数),然后通过优化,目标是使得所有已知点到椭圆的总距离最短.
3、关于点到椭圆的最短距离,有很多讨论,都非常复杂,并不实用.这里采用在椭圆上取足够多的点然后直接计算的距离的方式.
4、拟合得到椭圆参数后,面积S=πab直接计算,主轴和X轴的夹角为拟合得到的数据,而关于椭圆的X最大值对应的X,Y坐标的计算,可以把点取密集一些,直接求最大值,也可以对X求导数,然后解X'=0得到对应的t,再计算X、Y.
 
参考代码
function zd
X=[0.48, 1.58,2.428,3.032,3.36,3.368,2.92,2.172,1.368,0.512,-0.436,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48];
Y=[0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0.472,-0.6064,-0.7864,-0.2804,-0.752,-1.8572,-2.39,-2.24,-1.766,-0.8828,-0.0572,0.3136,0.472,0.6064,0.7864,0.752];
clf
plot(X,Y,'x')
hold on
c = lsqcurvefit(@curve,[3.5 1.5 30*pi/180 0 0],[X;Y],X*0)
a = c(1);
b = c(2);
Q = c(3);
T=linspace(0,2*pi,100);
x1=a*cos(T);
y1=b*sin(T);
x=x1*cos(Q)-y1*sin(Q);
y=x1*sin(Q)+y1*cos(Q);
plot(x,y,'r--')
% 椭圆的面积
S = pi*a*b
% 椭圆的X最大值对应的X,Y坐标
t=fzero(@(t)-a*cos(Q)*sin(t)-b*sin(Q)*cos(t),0);
x=a*cos(t)*cos(Q)-b*sin(t)*sin(Q)
y=a*cos(t)*sin(Q)+b*sin(t)*cos(Q)
plot(x,y,'mo')
legend('原始数据','拟合曲线','X最大值',4)
% 椭圆的主轴和X轴的夹角
Q = Q * 180/pi

function f = curve(c,xy)
a = c(1);
b = c(2);
Q = c(3);
t=linspace(0,2*pi,500);
x1=a*cos(t);
y1=b*sin(t);
x=x1*cos(Q)-y1*sin(Q) + c(4);
y=x1*sin(Q)+y1*cos(Q) + c(5);
f = xy(1,:)*0;
for i=1:length(xy)
    f(i) = min( sqrt((xy(1,i)-x).^2 + (xy(2,i)-x).^2 ) );
end
 
结果
程序输出:
c =
    3.4794    1.4809    0.5155   -0.0066         0

S =
   16.1875

x =
    3.1141

y =
    1.3654

Q =
   29.5357
也就是说a=3.48,b=1.48,Q=29.5度,S=16.2,如图所示.

MATLAB中如何在一个图中显示多条离散曲线一个x,两个y(y1和y2),x,y1,y2都是离散的点,怎么样将拟合的图像显示在一张图上.用MATLAB, 如何寻找最好的拟合曲线?以及matlab中Polyfit的用法?主要有两个问题:1 对于一组离散点,如何寻找最好的拟合函数(曲线)?比如这组离散点,究竟是该选择多项式拟合合理,还是选用指数函数拟合更 如何用matlab实现多项式拟合?要源代码已有数据x=[...],y=[...]离散数据 我用matlab做了两条离散点的拟合曲线,现在相求这两条线的交点,用什么程序 请问:用matlab的plot画好离散点的曲线后,怎样根据曲线求已知纵坐标的值(这个值对应两个x值)?我没有拟合曲线. matlab拟合离散点曲线有X=( 0.48 ,1.58 ,2.428,3.032,3.36,3.368,2.92,2.172 ,1.368 ,0.512 ,-0.436 ,0.876,-0.48,-1.58,-2.428,-3.032,-3.36,-3.368,-2.92,-2.172,-1.368,-0.512,0.436,0.48 ) Y=(0.752,1.8572,2.39,2.24,1.766,0.8828,0.0572,-0.3136,-0 matlab离散点数据直线拟合对于读取的特定图像 如何利用matlab对于离散点进行直线拟合 matlab拟合的曲线如何求积分面积?只知道25个离散点的数据(x,y)不知道函数表达式,用cftool拟合的曲线,type of fit选择的smoothing spline,如下图所示,我现在想求x从[0,24]曲线与x轴包围的面积,请问 matlab离散点拟合成曲线的拟合过程制作成视频我想用matlab对一组坐标数据(比如20组数据)进行拟合,得出一条拟合曲线.但是整个想要最后生成一个视频,即从第一个点拟合到第二个点,再到第 最小二乘法用一个多项式函数拟合多个多项式函数用最小二乘法拟合,如何用matlab实现啊?matlab里面有现成的函数么?我看大多是点拟合曲线的.比如y1=a1*x^2+a2*x+a3,y2=b1*x^2+b2*x+b3,其中b1,b2,b3,a1,a2,a3 matlab 给出一些数据 能大概判断出图形 怎么预测 下一点如果给出x是1到20 ,y是离散点,基本符合三角函数吧,请问怎么拟合出大致曲线,并预测当x=21的时候,y=?,x=22时,y=? Matlab 将离散点拟合画出图形之后求出相应横坐标Y=[0.8,2.1,3.3,3.6,3,3,3.0,2.7,2.4,0.3 ,4.8 ,4.9,5.8,5.9 ]X=[5:10:135]用代码画出基于这些点的图形,最好是平滑曲线,然后写代码运算出Y=[1,2,3,4,5]时候大概相 通过一些离散点,如何拟合成一个完整的椭圆曲线的matlab程序?如题,请举例说明,最后能生成下图所示的样子 matlab 拟合曲线想画出一些点拟合出的平滑曲线(点在线附近).如:点坐标为 x=[1 2 3 4 5 6];y=[21 45 75 94 98 98]; 怎么用matlab代码拟合椭圆?离散点拟合椭圆,求matlab代码,要确定可以用的! matlab离散点拟合我的x=1:20y=[42 45 47 49 52 59 66 74 85 98 111 125 136 147 157 162 164 167 168 168]一共20个点 我想将这20个拟合成一条直线并且 得到拟合后的函数值 求matlab编程 matlab中如何用离散点生成光滑曲线 用MATLAB拟合曲线并求函数x=[0 0.1 0.2 0.4 0.6 0.8 1]y=[7.53 7.04 6.2 4.8 3.57 3.03 2.54]数据如下,已知尽量拟合成y=7.53-Aln(1+bx)的形式,我用MATLAB,一拟合就拟合失败,有没有什么软件能拟合出来