参考:https://blog.csdn.net/zengxiantao1994/article/details/70210662

Matlab代码:

  1. N = ;
  2. x = [ ];
  3. y = [ ];
  4. subplot(,,);
  5. plot(x,y,'*');
  6. % 图形的一些设置
  7. xlabel('时间(秒)');
  8. ylabel('位移(米)');
  9. title('原始数据离散点')
  10. grid on
  11. subplot(,,);
  12. p = polyfit(x,y,); %得出P就是线性拟合的系数
  13. % :0.01:
  14. x1 = ::N; %起始为0,终点为N,步长1
  15. y1 = polyval(p,x1);
  16. plot(x,y,'*',x1,y1,'r')
  17. xlabel('时间(秒)');
  18. ylabel('位移(米)');
  19. title('红线为最小二乘法拟合')
  20. grid on
  21.  
  22. sumxyji =sum(x.*y); %向量内积
  23. sumx = sum(x);
  24. sumy = sum(y);
  25. sumxx = sum(x.*x);
  26. k = (N*sumxyji - sumx*sumy)/(N*sumxx-sumx*sumx)
  27. b = (sumy-k*sumx)/N

效果:

自己C语言实现:

公式:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //函数功能:进行最小二乘曲线拟合(拟合y=a0+a1*x),计算出对应的系数a
  5. //参数说明:
  6. // n: 给定数据点的个数
  7. // x[]: 存放给定n个数据点的X坐标
  8. // y[]: 存放给定n个数据点的Y坐标
  9. // k,b: 拟合多项式的系数,表示多项式的k,b
  10. void polyfit(int n,double x[],double y[],double &k,double &b)
  11. {
  12.  
  13. int i,j;
  14. double sumxymultiply = 0.0;
  15. double sumx = 0.0;
  16. double sumy = 0.0;
  17. double sumxx = 0.0;
  18. for (i=;i<n;i++)
  19. {
  20. sumx += x[i];
  21. sumy += y[i];
  22. sumxymultiply += (x[i]*y[i]);
  23. sumxx += (x[i]*x[i]);
  24. }
  25.  
  26. k = (n*sumxymultiply - sumx*sumy)/(n*sumxx - sumx*sumx);
  27. b = (sumy-k*sumx)/n;
  28. }
  29.  
  30. void printArr(double *arr,int n)
  31. {
  32. for(int i=;i<n;++i)
  33. printf("%lf ",arr[i]);
  34.  
  35. printf("\n");
  36. }
  37. int main()
  38. {
  39. const int N = ;
  40.  
  41. double x[N] = {,,, ,,,,};
  42. double y[N] = {,,,,,,,};
  43. double k,b;
  44.  
  45. polyfit(N,x,y,k,b);
  46. printf("%lf %lf\n",k,b);
  47.  
  48. return ;
  49. }

matlab和C语言实现最小二乘法的更多相关文章

  1. MATLAB与C语言对比实例:随机数生成

    MATLAB与C语言对比实例:随机数生成 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.整型随机数生成函数 1.C语言程序 int intrand ...

  2. Matlab调用C语言函数

    Matlab调用C语言函数 如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:double add(double x, double y) { return x + y ;}现在我想要在 ...

  3. matlab转C语言

    1.软件版本  matlab R2018a 2.步骤 (1).编写特定功能的matlab代码,以及其测试文件 (2).检查matlab代码的兼容性,确保matlab代码都能转换成C/C++代码(并不是 ...

  4. matlab和C语言的break及continue测试

    break和continue语句 有两个附加语句可以控制while和for循环:break和continue语句.break语句可以中止循环的执行和跳到end后面的第一句执行,而continue只中止 ...

  5. Matlab和C语言混合编程,包含目录的设定

    如果.c文件不依赖于任何第三方库,那么mex编译很简单,只需要在matlab的命令行输入 mex test.c 即可. 但是如果这个c文件使用了第三方库文件,如opencv.gsl等等,那么就需要更改 ...

  6. MATLAB和C语言混合编程-----Matlab7.0 编译器设置

    (1) mex 命令设置 (a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“ mex -setup ”命令后,按回车键,安装 Matlab 编译器: ...

  7. C语言与MATLAB接口 编程与实例 李传军编着

    罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...

  8. Matlab界面语言切换,自由显示中文或英文语言

    Matlab界面语言切换,自由显示中文或英文语言分享给大家,Matlab是一款商业数学软件,广泛使用于算法的开发.数据发现和数值计算等.不同用户对Matlab显示的语言需求也不一样,一用户习惯使用中文 ...

  9. 接触Matlab10年后的一个总结,随时使用Matlab要掌握的一些要点

    不记得上一次写超过20行的matlab程序是什么时候了,大概是2013年吧,那个时候写过2篇文章,实际用到了 一些matlab的内容,超过200行的matlab程序应该要追溯到2011年了,最近为了帮 ...

随机推荐

  1. python接口测试之requests库(一)

    一.requests库的安装 requests库作为第三方库,需要安装 cmd模式下,运行pip install requests 二.在学习如何发送请求之前,我们先来了解一下requests库,查看 ...

  2. Task 4.4二维环形数组求最大子矩阵之和

    任务: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数 ...

  3. 使用myeclipse2014整合ss2h

    使用myeclipse2014整合ssh 新建一个webproject 创建过程中注意选择生成web.Xml   先添加struts2的能力 选择都添加过滤器的选项 Core dojo Dwr spr ...

  4. asp.net文件上传接收不到文件 Request.files["']等于null

    这个时候你应该检查下你的form表单里面是否配置了这个: enctype ="multipart/form-data"  新手容易出错哦. <form id="fo ...

  5. 简单的树(summary)

    实验任务 可怜的 Bibi 丢了好几台手机以后,看谁都像是小偷,他已经在小本本上记下了他认为的各个地点的小偷数量. 现在我们将Bibi的家附近的地形抽象成一棵有根树.每个地点都是树上的 一个节点,节点 ...

  6. SQL Server 无法连接到本地服务器

    未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接:     解决办法: 在服务中启动SQL Server (MSSQLSERVER)这个服务.

  7. charles抓取移动端app数据

    pc端为mac 移动端为android pc端 1.下载charles并安装 安利一个超好的良心网站(好多好用的软件都可以在上面找到,并且免费): http://xclient.info/search ...

  8. Beta阶段DAY5

    一.提供当天站立式会议照片一张 二.每个人的工作 1.讨论项目每个成员的昨天进展 刘阳航:改进UI,美化界面. 林庭亦:优化代码结构 郑子熙:改进UI,美化界面. 陈文俊:优化代码结构 2.讨论项目每 ...

  9. 初期测评 A 排序

    https://vjudge.net/contest/240302#problem/A 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0 ...

  10. js 时间处理函数 (判断今天是否在一段时间内)

    var curTime = new Date(); //2把字符串格式转换为日期类 var startTime = new Date(Date.parse("2018-3-28 16:44& ...