這裡直接給**,理論推導請參看最小二乘法的理論推導
c語言實現
#include //最小二乘法求散點擬合函式y=a+bx的引數a和b
void lfm(double x,double y,int n)
{ int i;
double a=0,b=0;
double sum1=0,sum2=0;
double mean_x=0,mean_y=0;
//計算平均值
for(i=0;imatlab實現clc;clear;close all
%% 載入資料
x=[-0.5,-1.0,-1.5,-2.0,-2.5,-3,-3.5,-5,-7,-10,-0.1,-0.2,-0.3,-0.4];
y=[0.528453,1.04233,1.51821,2.03788,2.50965,3.01868,3.48255,4.99680,6.98300,9.98355,0.133300,0.232100,0.325205,0.422272];
%% 最小二乘法
%求散點擬合函式y=a+bx的引數a和b
para=polyfit(x,y,1);
b=para(1);
a=para(2);
fprintf("擬合的直線方程為y=%f+(%f)*x",a,b);
%% 繪圖
fig= figure(1);ax = axes('parent',fig);
y_hat=a+b*x;
p = plot(x,[y',y_hat']);
set(p(1),'displayname','實驗資料','linestyle','none','marker','x','color','r');
set(p(2),'displayname','擬合直線','color','k');
xlabel('輸入電壓(單位:v)');
ylabel('輸出頻率(單位:khz)');
title('電壓頻率轉換散點擬合圖');
leg = legend(ax,'show');set(leg,'position',[0.75 0.8 0.1 0.1]);
axis tight;axis([-10 0 0 10]);
[1]
最小二乘法 直線擬合
功能描述 利用最小二乘法求斜率 xytopx 截距 方法1 xytopy 斜率 ncount 點數 void min2method double xytopy,double xytopx,int x,int y,int ncount graphics.drawline pen,point x i y...
最小二乘法擬合直線 c 程式
point.h class point point類的宣告 float getx float gety friend float linefit point l point,int n point 友元函式 int型變數為點數 private 私有資料成員 float x,y end of poin...
C 最小二乘法直線擬合演算法
測試資料 x2 3456 y0.22 0.38 0.55 0.65 0.70 terminal 粗體為輸出,其它為輸入 請輸入樣本點的數目 5 請輸入樣本點的坐標。x,y 2,0.22 x,y 3,0.38 x,y 4,0.55 x,y 5,0.65 x,y 6,0.70 x bar 4 y bar...