最小二乘法直线拟合

其他算法  / 只看大图  / 正序浏览  © 著作权归作者所有感觉不错,请素质四连!点赞,收藏,加关注,送评分

#楼主# 2023-1-29

感觉不错,请素质四连哦!点赞,收藏,加关注,送评分!
跳转到指定楼层
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
已知输入:X,输出:Y,共有5组采样标本数据的情况下(5组可以按实际情况增减,程序中对应数组范围:ArrRange),推算出直线公式:Y:=bX+a,b和a通过样本数据计算得出全局常量变量声明:
VAR_GLOBAL CONSTANT
        ArrRange:UINT:=5;//数组大小设置
END_VAR
image.png

功能块变量声明:
VAR_INPUT
        X                :ARRAY [1..ArrRange] OF REAL;//数组范围在全局变量设置
        Y                :ARRAY [1..ArrRange] OF REAL;
        X_In:REAL;
       
END_VAR
VAR_OUTPUT


        Y_Out:REAL;
       
END_VAR
VAR
        X_SIZE:UINT;
        X_ArrRange:UINT;
        i: INT;
       
        X_Mean:REAL;//X平均
        Y_Mean:REAL;//Y平均
        XY_Product: REAL;//Xi* Yi
        X_Square:REAL;
       
        a:REAL;
        b:REAL;
        bStart: BOOL;
       
        Variance: REAL;// 方差验证,越小越好
END_VAR

image.png

程序:
// SizeOfAry(in:=x,out=>X_SIZE);//用该函数能自动计算数组范围
// AryMean(In:=X[1], Size:=X_SIZE, Out:=X_Mean );//该函数能自动累加数组,然后平均值


//每次计算前,全部清零
        Variance:=0;
        XY_Product:=0;
        X_Square:=0;
       
//开始计算
        AryMean(In:=X[1], Size:=ArrRange, Out:=X_Mean );//X数组平均值计算
        AryMean(In:=Y[1], Size:=ArrRange, Out:=Y_Mean );//Y数组平均值计算
       
        FOR i:=1 TO UINT_TO_INT(ArrRange) DO
                XY_Product:=X*Y+XY_Product;//Xi* Yi累加
        END_FOR
       
        FOR i:=1 TO UINT_TO_INT(ArrRange) DO
                X_Square:=X*X+X_Square;//Xi平方累加
        END_FOR
               
//结果               
        b:=(XY_Product-ArrRange*X_Mean*Y_Mean)/(X_Square-ArrRange*X_Mean*X_Mean);//斜率
        a:=Y_Mean-b*X_Mean;//常量
       
//均方差显示       
        FOR i:=1 TO UINT_TO_INT(ArrRange) DO
                Variance:=(b*X+a-Y)*(b*X+a-Y)+Variance;//Y-Yi平方,累加
        END_FOR
        Variance:=SQRT(Variance);//开平方,最终得出均方差,网上说小于2,代表该直线合理,大于2则不适合用该直线拟合公式,试试用曲线拟合公式
       
//曲线公式,X_In为输入值,Y_Out为输出结果
        Y_Out:=b*X_In+a;



image.png

已有 0 人打赏作者

0
回复 邀请回答送花

使用道具

TOP 发表于 2023-1-29 10:05:53
调用该功能块时,需要至少给两组数据X,Y数组,先让其计算出a,b,再实时通过给定输入:XIN,得到输出:YOUT值,计算方法、验证来源:https://www.bilibili.com/list/ml ... p;bvid=BV1sZ4y1x7ys
image.png
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

关于作者

TOP

3级微雨(Lv.3)

  • 主题

    2

  • 帖子

    4

  • 关注者

    0

Archiver|手机版|小黑屋|汇川技术-水滴社区 |苏ICP备12002088号
Powered by Discuz! X3.4  © 2019-2100 INOVANCE INC.