怎么用MATLAB进行多元多项式拟合
x1=[1.51.5222.52.52.52.53333];x2=[0.050.10.150.20.050.10.150.20.050.10.150.2];y=[10.9...
x1=[1.5 1.5 2 2 2.5 2.5 2.5 2.5 3 3 3 3];x2=[0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2];y=[1 0.99 0.98 0.97 0.98 0.975 0.97 0.965 0.975 0.97 0.965 0.96];求Y等于X1,X2的函数表达式。怎么用MATLAB做啊!初学者请教各位高手
展开
4个回答
2018-07-05 · 知道合伙人软件行家
关注
展开全部
实例
1
先看一个具体的例子,通过构造一系列离散的二维点集,然后用不同阶次的多项式来拟合,比较哪个效果更好。最后说明多项式拟合在matlab中的用法。
2
首先启动matlab,选择编辑器,再新建一个命令文件。
3
然后,在编辑器窗口中输入本题的代码。如下图所示。并保存,此处命名为dxsnh。
4
需要注意的是,保存文件的位置要与当前搜索路径的位置保持一致。这可以通过右键编辑窗口的文件,在弹出的下拉框中选择。
5
最后再命令行窗口处输入dxsnh,并敲入键盘上的enter建。可以看出阶数越高,曲线与拟合点拟合得越好。
END
命令解释
1
通过上面的例子知道,matlab实现多项式拟合的关键命令是polyfit。
2
该命令的格式如下
[p,s]=polyfit(x,y,n)
功能介绍:对于已知的数据x、y进行多项式拟合,拟合的多项式的阶数为n,其中p为多项式的系数矩阵,s为预测误差估计值的矩阵。
1
先看一个具体的例子,通过构造一系列离散的二维点集,然后用不同阶次的多项式来拟合,比较哪个效果更好。最后说明多项式拟合在matlab中的用法。
2
首先启动matlab,选择编辑器,再新建一个命令文件。
3
然后,在编辑器窗口中输入本题的代码。如下图所示。并保存,此处命名为dxsnh。
4
需要注意的是,保存文件的位置要与当前搜索路径的位置保持一致。这可以通过右键编辑窗口的文件,在弹出的下拉框中选择。
5
最后再命令行窗口处输入dxsnh,并敲入键盘上的enter建。可以看出阶数越高,曲线与拟合点拟合得越好。
END
命令解释
1
通过上面的例子知道,matlab实现多项式拟合的关键命令是polyfit。
2
该命令的格式如下
[p,s]=polyfit(x,y,n)
功能介绍:对于已知的数据x、y进行多项式拟合,拟合的多项式的阶数为n,其中p为多项式的系数矩阵,s为预测误差估计值的矩阵。
展开全部
x1=[1.5 1.5 2 2 2.5 2.5 2.5 2.5 3 3 3 3];
x2=[0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2];y=[1 0.99 0.98 0.97 0.98 0.975 0.97 0.965 0.975 0.97 0.965 0.96];
cftool
先执行以上三个语句,接着会出来一个新图,再在上面点“数据”,载入x1,x2,再点拟合,在出来的新图里选“新拟合”,再在选择拟合类型为“高斯”,接下来点“应用就行了
x2=[0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2 0.05 0.1 0.15 0.2];y=[1 0.99 0.98 0.97 0.98 0.975 0.97 0.965 0.975 0.97 0.965 0.96];
cftool
先执行以上三个语句,接着会出来一个新图,再在上面点“数据”,载入x1,x2,再点拟合,在出来的新图里选“新拟合”,再在选择拟合类型为“高斯”,接下来点“应用就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的cftool很好用,也很方便
如果你非要用程序做。。。。。。。
请先把重复的数据去掉,否则没法拟合或者出错误
不知道楼主这组数据哪里来的,我以前也有过类似的问题,最后直接放弃啦
搂着可以看看,对于一个x值有两个y值,甚至多达4个,你可以大致描个点试试,对于这样的数据点基本拟合不出合适的曲线,因为有很多曲线合适也不合适
所以,楼主可以换组数据
这样的数据,真的没法拟合
当然,小弟能力有限,没准有大虾可以解决
如果你非要用程序做。。。。。。。
请先把重复的数据去掉,否则没法拟合或者出错误
不知道楼主这组数据哪里来的,我以前也有过类似的问题,最后直接放弃啦
搂着可以看看,对于一个x值有两个y值,甚至多达4个,你可以大致描个点试试,对于这样的数据点基本拟合不出合适的曲线,因为有很多曲线合适也不合适
所以,楼主可以换组数据
这样的数据,真的没法拟合
当然,小弟能力有限,没准有大虾可以解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我教你个方法,希望你好好理解:
C
=
[ones(length(x1),
1)
x1'
x2'];
temp
=
pinv(C)*y';
ysim
=
C*temp;
plot(y');
hold
on;
plot(ysim,
'ro');
legend('y',
'ysim');
看看效果~~
temp里面的三个值就是对应项的参数:y
=
temp(1)
+
temp(2)*x1
+
temp(3)*x2;
C
=
[ones(length(x1),
1)
x1'
x2'];
temp
=
pinv(C)*y';
ysim
=
C*temp;
plot(y');
hold
on;
plot(ysim,
'ro');
legend('y',
'ysim');
看看效果~~
temp里面的三个值就是对应项的参数:y
=
temp(1)
+
temp(2)*x1
+
temp(3)*x2;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询