如何用MATLAB对二组数据同时进行曲线拟合

各位MATLAB专家,本人对这个软件不懂,但是想用它来拟合一组数据成曲线和方程,我现在已经知道一组(X,Y)如何来拟合成曲线和方程了,可是要是有二组数据要同时拟合成曲线且... 各位MATLAB专家,本人对这个软件不懂,但是想用它来拟合一组数据成曲线和方程,我现在已经知道一组(X,Y)如何来拟合成曲线和方程了,可是要是有二组数据要同时拟合成曲线且在一个坐标区内又如何拟合呢?谢谢。如:x=[0 10 20 30 40 50 60 70 80 90 100];y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48]这个就是指在X是一样的情况下所获得的二组Y数据。请多指教。同时如果是三组、四组呢?再次谢谢。
上面两位的意思是一样的,我试过了都可以获得二条曲线,但是在图中散点没有了,只有曲线了,要是能在图中同时有散点和曲线就好了,另外是否可以有像拟合一条曲线一样的简易方法,也就是用CFTOOL(X,Y)的方法呢?而且直接就得到了方程。
展开
 我来答
小小欧平儿
高粉答主

2019-06-06 · 说的都是干货,快来关注
知道答主
回答量:1039
采纳率:100%
帮助的人:16万
展开全部

1、首先打开电脑上的“matlab”软件,在命令行输入x=0:2*pi/8:2*pi确定x的取值,使用y=sin(x)产生正弦函数的数值,使用x和y的数据进行拟合,方便验证拟合结果。

2、接着在命令行输入cftool,打开matlab自带的曲线拟合工具箱。

3、曲线拟合工具箱的界面如下图所示,方框处可以选择拟合的数据。

4、选择自变量为x,因变量为y,接下来点击方框处选择拟合方法,可以根据自己的需要选择,此处点击“sum of sine”进行正弦曲线拟合。

5、选择拟合方法后,系统会自动对数据进行拟合,拟合结果如方框处所示。

南方的天空白云
推荐于2017-09-14 · TA获得超过347个赞
知道答主
回答量:22
采纳率:0%
帮助的人:26.1万
展开全部
这个我会,其实很简单,只要在程序上加上hold on 即可,程序如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b')
我运行了,没有问题
要多组也是没有问题的,加上hold on 就行了
方程的话,求出p和S就行了!如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p1,S]=polyfit(x,y1,2);
[p2,S]=polyfit(x,y2,2);
p1,p2

p1 =

0.0001 0.0031 0.0308

p2 =

0.0001 0.0035 0.0355
方程就是:y1=0.0001x^2+0.0031x+0.0308
y2=0.0001x^2+0.0035x+0.0355

补充:你还要图中的散点?也简单,如下:
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r+',x,y1,'r');
hold on;
Y=polyconf(p,x,y2);
plot(x,y2,'b*',x,y2,'b')
要是用cftool的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摩羯fgdfh
推荐于2017-09-06 · TA获得超过2.7万个赞
知道大有可为答主
回答量:7994
采纳率:78%
帮助的人:925万
展开全部
Matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。一般我们做社会调研或科学研究时,会得到很多实验数据。当需要研究两个变量之间的关系时,经常要用到曲线拟合。曲线拟合不仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。 其实用matlab做曲线拟合很便捷,下面将以两个变量(y=f(x))为例详细介绍:
运行Matlab软件。
在工作空间中存入变量的实验数据。具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。
把数据存入工作空间后,在命令窗口中输入cftool,回车运行。
在这个拟合工具窗口的左边,选择变量,即分别选择x,y。
选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。
选择完后会自动完成拟合,并且给出拟合函数表达式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙维百里韵流
2020-01-17 · TA获得超过1119个赞
知道小有建树答主
回答量:1465
采纳率:100%
帮助的人:6.4万
展开全部
这个我会,其实很简单,只要在程序上加上hold
on
即可,程序如下:
x=[0
10
20
30
40
50
60
70
80
90
100];
y1=[0
0.07
0.15
0.25
0.35
0.49
0.59
0.72
0.91
1.14
1.47];
y2=[0
0.08
0.17
0.26
0.36
0.50
0.61
0.73
0.93
1.16
1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r');
hold
on;
Y=polyconf(p,x,y2);
plot(x,y2,'b')
我运行了,没有问题
要多组也是没有问题的,加上hold
on
就行了
方程的话,求出p和S就行了!如下:
x=[0
10
20
30
40
50
60
70
80
90
100];
y1=[0
0.07
0.15
0.25
0.35
0.49
0.59
0.72
0.91
1.14
1.47];
y2=[0
0.08
0.17
0.26
0.36
0.50
0.61
0.73
0.93
1.16
1.48];
[p1,S]=polyfit(x,y1,2);
[p2,S]=polyfit(x,y2,2);
p1,p2
p1
=
0.0001
0.0031
0.0308
p2
=
0.0001
0.0035
0.0355
方程就是:y1=0.0001x^2+0.0031x+0.0308
y2=0.0001x^2+0.0035x+0.0355
补充:你还要图中的散点?也简单,如下:
x=[0
10
20
30
40
50
60
70
80
90
100];
y1=[0
0.07
0.15
0.25
0.35
0.49
0.59
0.72
0.91
1.14
1.47];
y2=[0
0.08
0.17
0.26
0.36
0.50
0.61
0.73
0.93
1.16
1.48];
[p,S]=polyfit(x,y1,2);
[p,S]=polyfit(x,y2,2);
Y=polyconf(p,x,y1);
plot(x,y1,'r+',x,y1,'r');
hold
on;
Y=polyconf(p,x,y2);
plot(x,y2,'b*',x,y2,'b')
要是用cftool的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-02-07
展开全部
不好意思,没有找到直接拟合多组数据的函数,说一条替代方案吧.
方案一 拟合两次,同时画出图像;方案二 拟合两次,分别画图,但在同一张图中显示
具体的程序:
方案一
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
p1=polyfit(x,y1,3);%拟合高阶方程得系数,这个你应该知道的吧
p2=polyfit(x,y2,3);
x1=0:100;
new_y1=polyval(p1,x1);
new_y2=polyval(p2,x1);
plot(x1,new_y1,'r',x1,new_y2,'-b')

方案二
x=[0 10 20 30 40 50 60 70 80 90 100];
y1=[0 0.07 0.15 0.25 0.35 0.49 0.59 0.72 0.91 1.14 1.47];
y2=[0 0.08 0.17 0.26 0.36 0.50 0.61 0.73 0.93 1.16 1.48];
p1=polyfit(x,y1,3);
p2=polyfit(x,y2,3);
x1=0:100;
new_y1=polyval(p1,x1);
new_y2=polyval(p2,x1);
plot(x1,new_y1,'r')
hold on;%同时显示两张图
plot(x1,new_y2,'-b')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式