第1个回答 2015-12-27
二元二次拟合自变量有2个,因变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。由于是二元二次模型,2个函数都可以用。
以regress为例,
假设因变量存在y向量中,自变量存在x1、x2向量中。因为要使用二元二次模型,首先要构造自变量矩阵:
X=[x1.^2,x2.^2,x1.*x2,x1,x2,ones(size(x1))];%注意,需要有1列全为1
然后就能调用regress了
[b,bint,r,rint,stats] = regress(y,X)
b为回归系数,bint为置信区间。r为残差,rint为残差置信区间。stats为反应回归品质的统计参数。
扩展:
此外,nlinfit与regress都有相应配套函数。与nlinfit配套的有nlintool(互动窗口)、nlinparci(计算拟合系数置信区间)、nlinpredci(计算预测值置信区间)。与regress配套的有rcoplot(画残差图)。
对于进阶matlab使用者还有更多的选择,如拟合工具箱、fit函数等等。
第2个回答 2010-06-07
三次多项式应该都可以达到你的要求
clc;clear;
x=[5 10 16 25 33 47 60];
y=[18 31 66 68 70 72 70];
a=polyfit(x,y,3) %这里用三次多项式拟合a就是这些系数
y =vpa(poly2sym(a),10) %输出的你要的函数。
x=0:0.01:100;%后面是画出的图像
y=vectorize(y)
y=eval(y);
plot(x,y,'-');
第3个回答 2010-06-07
clear
x(:,1)=[5 10 16 25 33 47 60]';
x(:,2)=[18 31 66 68 70 72 70]';
x(:,3)=x(:,1).^2;
x(:,4)=x(:,2).^2;
x(:,5)=x(:,2).*x(:,1);
x(:,6)=ones(length(x(:,1)),1);
y=[23 33 52 51 43 40 46]';
regress(y,x);
第4个回答 2010-06-07
应该是用多项式拟合函数polyfit对已知数据进行指定阶的多项式回归。具体我就忘了,是好久以前学的MATLAB了!不好意思!