怎么用MATLAB中的regress命令编程求出参数a,b,c y=a+bx+cx^2

怎么用MATLAB中的regress命令编程求出参数a,b,c y=a+bx+cx^2x

  在Matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为
  b=regress(y,x)
  或
  [b,bint,r,rint,stats] = regress(y,x,alpha)
  其中因变量数据向量y和自变量数据矩阵x按以下排列方式输入
  对一元线性回归,取k=1即可。alpha为显著性水平(缺省时设定为0.05),输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有三个数值,第一个是R2,其中R2是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,当P<α
  时拒绝H0,回归模型成立。
  画出残差及其置信区间,用命令rcoplot(r,rint)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-16
二次回归方程应该用,regress是线性回归
p=polyfit(x,y,n)追问

求完整程序的写法

追答

x=1978:1989;

y=[0.1825 0.1782 0.1821 0.2091 0.2228 0.2019 0.1999 0.1426 0.1557 0.1661 0.1553 0.1504];

p=polyfit(x,y,2);

y1=polyval(p,x);

plot(x,y,x,y1);


p =

  1.0e+003 *

   -0.0000    0.0038   -3.7903

a=p(1),b=p(2),c=p(3)

第2个回答  推荐于2016-10-26
x=[1978 ... 1989];
y=[0.1825 ... 0.1504];
x1=[ones(size(x)) x x.^2];
b=regress(y,x1)
x,y自己赋值,得到的b就是对应的a,b,c追问

电脑关机了,明天试验下,能行给分啊!多谢

追答

不好意思,刚错了,是要按列来排

x=1978:1989;
y=[0.1825 0.1782 0.1821 0.2091 0.2228 0.2019 0.199 0.1426 0.1557 0.1661 0.1553 0.1504]';
x1=[ones(size(x')) x' x'.^2];
b=regress(y,x1)
b =
1.0e+003 *
-3.7593
0.0038
-0.0000
>> b(1)
ans =
-3.7593e+003
>> b(2)
ans =
3.7949
>> b(3)
ans =
-9.5767e-004

本回答被提问者采纳
第3个回答  2019-12-05
这个我不会帮不了你,不好意思。
相似回答