如何用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)的方法呢?而且直接就得到了方程。 展开
上面两位的意思是一样的,我试过了都可以获得二条曲线,但是在图中散点没有了,只有曲线了,要是能在图中同时有散点和曲线就好了,另外是否可以有像拟合一条曲线一样的简易方法,也就是用CFTOOL(X,Y)的方法呢?而且直接就得到了方程。 展开
6个回答
展开全部
这个我会,其实很简单,只要在程序上加上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的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
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的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。一般我们做社会调研或科学研究时,会得到很多实验数据。当需要研究两个变量之间的关系时,经常要用到曲线拟合。曲线拟合不仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。 其实用matlab做曲线拟合很便捷,下面将以两个变量(y=f(x))为例详细介绍:
运行Matlab软件。
在工作空间中存入变量的实验数据。具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。
把数据存入工作空间后,在命令窗口中输入cftool,回车运行。
在这个拟合工具窗口的左边,选择变量,即分别选择x,y。
选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。
选择完后会自动完成拟合,并且给出拟合函数表达式。
运行Matlab软件。
在工作空间中存入变量的实验数据。具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。
把数据存入工作空间后,在命令窗口中输入cftool,回车运行。
在这个拟合工具窗口的左边,选择变量,即分别选择x,y。
选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。
选择完后会自动完成拟合,并且给出拟合函数表达式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个我会,其实很简单,只要在程序上加上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的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
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')
方案一 拟合两次,同时画出图像;方案二 拟合两次,分别画图,但在同一张图中显示
具体的程序:
方案一
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')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询