急!求高手,如何用matlab进行曲线拟合,就是已知x轴和y轴的数值,拟合出一个公式。

x=[02864103123144217291429504553657711783838];y=[31.5330.4329.3828.8028.1327.5925.532... x=[0 28 64 103 123 144 217 291 429 504 553 657 711 783 838];
y=[31.53 30.43 29.38 28.80 28.13 27.59 25.53 24.3 22.83 21.57 21.86 29.49 34.52 41.76 44.6];
请帮忙下,我实在是弄不出来~~~~~
展开
 我来答
swenjie0316
2010-12-19 · TA获得超过109个赞
知道答主
回答量:15
采纳率:0%
帮助的人:0
展开全部

表达式必须自己估计。有很多表达式都能拟合出类似曲线。matlab里做曲线拟合的主要有(我经常用的)有这两个:polyfit和lsqcurvefit。前者专门对高次多项式拟合,后者则适用于绝大多数非线性拟合。根据描点判断可以用多项式拟合,我下面以二次多项式举例:

clear

x=[ 0    28    64   103   123   144   217   291   429   504   553   657   711   783   838]';

y=[   31.5300

   30.4300

   29.3800

   28.8000

   28.1300

   27.5900

   25.5300

   24.3000

   22.8300

   21.5700

   21.8600

   29.4900

   34.5200

   41.7600

   44.6000];

%用polyfit拟合

p=polyfit(x,y,2); %用2次多项式

figure(1);

title('拟合1')

hold on

plot(x,y,'+',x,polyval(p,x));

legend('原始值','拟合值');

%用lsqcurvefit拟合

f=@(b,x) b(1)+b(2).*x+b(3).*x.^2; %构造要拟合的函数

b=lsqcurvefit(f,[1,1,1],x,y);   %进行拟合

figure(2)

title('拟合2');

hold on

plot(x,y,'+',x,f(b,x));

legend('原始数据','拟合数据')

只画第一张图作为参考,呵呵,剩下的程序会帮你做的。

百度网友efd9c79
2010-12-19 · TA获得超过298个赞
知道答主
回答量:123
采纳率:0%
帮助的人:193万
展开全部
clear;clc
x=[0 28 64 103 123 144 217 291 429 504 553 657 711 783 838]';
y=[31.53 30.43 29.38 28.80 28.13 27.59 25.53 24.3 22.83 21.57 21.86 29.49 34.52 41.76 44.6]';
X=[x.^2 x ones(15,1)];
a=regress(y,X)
x1=0:840;
Y=a(1)*x1.^2+a(2)*x1+a(3);
plot(x,y,'*',x1,Y)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式