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

各位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)的方法呢?而且直接就得到了方程。

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、选择拟合方法后,系统会自动对数据进行拟合,拟合结果如方框处所示。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-14
这个我会,其实很简单,只要在程序上加上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的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!本回答被提问者采纳
第2个回答  推荐于2017-09-06
Matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。一般我们做社会调研或科学研究时,会得到很多实验数据。当需要研究两个变量之间的关系时,经常要用到曲线拟合。曲线拟合不仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。 其实用matlab做曲线拟合很便捷,下面将以两个变量(y=f(x))为例详细介绍:
运行Matlab软件。
在工作空间中存入变量的实验数据。具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。
把数据存入工作空间后,在命令窗口中输入cftool,回车运行。
在这个拟合工具窗口的左边,选择变量,即分别选择x,y。
选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。
选择完后会自动完成拟合,并且给出拟合函数表达式。
第3个回答  2020-01-17
这个我会,其实很简单,只要在程序上加上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的话,真是没办法说,但是可以确定的是,可以将它们放在同一个图上,但是首先还是要选择变量!!!
第4个回答  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')

如何用matlab拟合出两组数据之间的关系?
如何用matlab拟合出两组数据之间的关系?具体如下:可以直接用矩阵来存放数据。当数据比较繁杂时,可以从excel等文件中导入。当所有数据存入工作空间后,在命令窗口中输入ftool,点击回车。在拟合工具窗口的左边,选择变量,就是分别选择x和y。选择拟合需要的曲线类型,常规就是是线性拟合,平滑曲线等。选择...

求救!!matlab如何把两组数据变成曲线并拟合成一条平滑的线!!_百度...
t2=min(x2):0.1:max(x2);z2=(120.\/t2-1).\/(1-fnval(sp2,t2));subplot(224)plot3(t2,fnval(sp2,t2),z2)title('第二组数据的x,y,z拟合曲线')xlabel('x')ylabel('y')zlabel('z')

已知,x和y两组数据,怎样用matlab求解拟合曲线 P=a+b*x+c*x^3_百度知...
function P=fun1(p,xdata)P=p(1)+p(2)*xdata+p(3)*(xdata.^3)然后在matlab命令中输入以下内容 x=[];y=[];x0=[0.10.1,0.1];[x0,resnorm]=lsqcurvefit(@fun1,x0,x,y);x0 输出了x0就是a、b、c三个未知数的值,就拟合出来了 ...

matlab实现曲线拟合
执行“p = polyfit(x, y, 1)”命令,此处1表示拟合一个1次多项式。运行结果为系数向量p,包含两个元素。接着,定义一组新的点xx,范围从0到150,以0.1为步长。根据系数向量p计算在xx点处的函数值yy。通过“plot(xx, yy, '-r', x, y, 'markersize', 20)”命令绘制图像。红色曲线表示根...

如何使用matlab实现数据的曲线拟合
打开Matlab软件,在命令窗口将数据导入,并分别给数据命名,这里以x ,Y命名两个行向量数据。x=[1,3,5,7,9,15];Y=[1,4,8,13,20,25];这里的数据也可以通过文件读取的方式导入(如csvread,load等命令)。在命令窗口输入cftool,打开拟合窗口。在拟合窗口选择要拟合的数据,那个作为x,哪个作为y。

利用Matlab进行曲线拟合
在Matlab中,`polyfit`和`polyval`函数用于进行多项式拟合。`polyfit(x,y,n)`函数根据观测数据和指定的多项式阶数得到光滑曲线的多项式表示,其中`x`是自变量,`y`是因变量,`n`是多项式阶数。`polyval(p,a)`函数用于计算多项式在给定点的值,其中`p`是多项式表示,`a`是点的标量或矩阵。当输入为...

matlab曲线拟合
在MATLAB中进行曲线拟合,可以通过多种方法实现,其中常用的是使用MATLAB内置函数进行拟合。具体步骤如下:1. 数据准备:首先,需要准备要进行拟合的数据,包括自变量和因变量。2. 选择拟合函数:根据数据的特点和需要,选择合适的拟合函数,如多项式拟合、指数拟合、正弦拟合等。3. 使用MATLAB内置函数进行拟合...

用matlab做曲线拟合,对关于x和y的两组数据进行y=a*log(x)+d 拟合...
x=[...];y=[...];fun1=inline('c(1)*log(x)+c(2),'c','x'); %拟合函数 c=lsqcurvefit(fun1,[0,0],x,y) %求拟合系数 y1=c(1)*log(x)+c(2) %拟合函数表达式值

matlab中curve fitting tool(曲线拟合工具)
方式1:在 MATLAB 命令行中输入`cftool`命令即可直接进入工具窗口。 方式2:在主菜单中选择“应用程序”->“CurveFitting”。 准备数据 在 MATLAB 命令行中输入要拟合的数据。选择曲线拟合 在曲线拟合工具左侧,给拟合曲线命名。 从下拉菜单中选择数据。 选择拟合类型 从“Custom Equations”...

如何用matlab计算二次曲线的拟合度?
第一步:需进行清除储存器储存的数据,按“SHIFT”键+“MODF”键,显示屏会出现如图的画面,从左至右分别表示清除数据、清除模式、清除所有,我们这里只需清除数据。按“1”键后,显示屏出现“Stat clear”字样,表示已清除。第二步:完成数据清除后,选“MODE”(模式),出现下图,从左至右分别表示...

相似回答