小弟求一个简单的一元线性回归预测MATLAB程序,感激不尽

小弟求一个简单的一元线性回归预测MATLAB程序,感激不尽,第1张

figure

x=[2005 2006 2007 2008 2009 2010]

y2=[45906 53809 63184 72123 81941 88833]

a=polyfit(x,y2,1)

xi=2005:1:2010

yi=polyval(a,xi)

plot(x,y2,'go','MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',6)

xlabel('年份')

ylabel('GDP')

axis([2005 2010 45000 90000])

hold on

plot(xi,yi,'linewidth',2,'markersize',16)

legend('原始数据点','拟合曲线')

plot(x,y2,'-r.')

sprintf('直线方程:Y2=%0.5g*X+(%0.5g)',a(1),a(2))

看看行不行!!!

线性预测是根据已有采样点按照线性函数计算未来某一离散信号的数学方法。

在数字信号处理中,线性预测经常称为线性预测编码(LPC),因此也可以看作是数字滤波器的一部分。

在系统分析中,线性预测可以看作是数学建模或者最优化的一部分最常见的表示是其中是预测的信号值, 是前面观测到的值, 是预测系数。这种预测产生的误差是

其中 是真正的信号值。

一元线性回归的C语言程序是:利用最小二乘法来估计线性回归方程的参数,然后用这些参数来预测因变量的值1。例如,你可以参考下面的代码:

#include <stdio.h>#include <math.h>//定义一个函数,计算一元线性回归方程的参数a和bvoid linear_regression(double x[], double y[], int n, double *a, double *b){//定义变量

double sum_x = 0//x的和

double sum_y = 0//y的和

double sum_xy = 0//xy的和

double sum_x2 = 0//x平方的和

//遍历数组,计算各项和

for (int i = 0i <ni++)

{

sum_x += x[i]

sum_y += y[i]

sum_xy += x[i] * y[i]

sum_x2 += x[i] * x[i]

}//根据最小二乘法公式,计算a和b

*a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - pow(sum_x, 2))

*b = (sum_y - (*a) * sum_x) / n

}//主函数int main(){//定义一个自变量数组x,存放观测值

double x[] = {1.0, 2.0, 3.0, 4.0} //定义一个因变量数组y,存放观测值

double y[] = {3.1, 4.9, 7.2, 8.9} //定义数组长度n

int n = sizeof(x) / sizeof(x[0]) //定义两个指针变量a和b,用来存放线性回归方程的参数

double a double b


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12048891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存