Java实现最小二乘法线性拟合,传感与检测,单臂半桥全桥实验,江南大学自动化

简介: Java实现最小二乘法线性拟合,传感与检测,单臂半桥全桥实验,江南大学自动化

因为作为资源上传不方便我们获取且我想免费分享给有需要的小伙伴,以后所有实验报告都通过文章形式记录输出了,仅供参考,欢迎交流。(最小二乘法代码在文末)


a018f93283824d7ab2bb9e368a8172da.jpg90011ea335b2431087f54ad76f54a024.jpg36b6c754ff2c47b3bce2f13ebb2aebf0.jpg81f63e3ca46647d786b36dcd3e85ade7.png


电桥特性曲线:


b93f5f086a2f4635917d637856883fb9.pngad720d25ba6e4d219b2a747cd6fa6436.png7251276ef7e74ddf961d74fa51e2bb60.png


Java实现最小二乘法线性拟合及计算灵敏度、非线性误差的代码:


/**
 * @Author: Yeman
 * @Date: 2021-10-29-23:03
 * @Description:
 */
public class LeastSquares {
    public static void matching(double[] x, double[] y, double[] input) {
        double k = getK(x, y);
        double b = getB(x, y);
        System.out.println("线性回归系数k值:\t" + k + "\n" + "线性回归系数b值:\t" + b);
        double maxy = 0; //用来记录最大偏差
        //寻找最大偏差
        for (int i = 0; i < input.length; i++) {
            if (Math.abs(k * input[i] + b - y[i]) > maxy){
                maxy = Math.abs(k * input[i] + b - y[i]);
            }
        }
        System.out.println("最大偏差为:" + maxy);
        //求灵敏度
        double s = 0;
        double sum = 0;
        for (int i = 1; i < y.length; i++) {
            sum += y[i] - y[i-1];
        }
        s = sum / (y.length - 1) / 20;
        System.out.println("灵敏度为:" + s);
        //求线性误差
        System.out.println("非线性误差为:" + maxy/y[10]);
    }
    /*
     * 返回x的系数k 公式:k = ( n sum( xy ) - sum( x ) sum( y ) ) / ( n sum( x^2 ) - sum(x) ^ 2 )
     */
    public static double getK(double[] x, double[] y) {
        int n = x.length;
        return (double) ((n * pSum(x, y) - sum(x) * sum(y)) / (n * sqSum(x) - Math.pow(sum(x), 2)));
    }
    /*
     * 返回常量系数系数b 公式:b = sum( y ) / n - k * sum( x ) / n
     */
    public static double getB(double[] x, double[] y) {
        int n = x.length;
        double k = getK(x, y);
        return sum(y) / n - k * sum(x) / n;
    }
    /*
     * 求和
     */
    private static double sum(double[] ds) {
        double s = 0;
        for (double d : ds)
        {
            s = s + d;
        }
        return s;
    }
    /*
     * 求平方和
     */
    private static double sqSum(double[] ds) {
        double s = 0;
        for (double d : ds) {
            s = (double) (s + Math.pow(d, 2));
        }
        return s;
    }
    /*
     * 返回对应项相乘后的和
     */
    private static double pSum(double[] x, double[] y) {
        double s = 0;
        for (int i = 0; i < x.length; i++) {
            s = s + x[i] * y[i];
        }
        return s;
    }
    public static void main(String[] args) {
        double[] x = {0,20,40,60,80,100,120,140,160,180,200};
        double[] y1 = {0,4.1,8.1,12.2,17.1,21.7,25.8,29.9,34.1,37.8,43.3};
        double[] y2 = {0,7.5,15.1,22.9,30.7,38.6,46.3,54.2,62.0,69.9,77.8};
        double[] y3 = {0,15.0,31.3,47.0,62.6,78.3,93.8,109.6,125.5,141.2,157.3};
        double[] inputs = x;
        System.out.println("===单臂电桥:");
        matching(x, y1,inputs);
        System.out.println("======半桥:");
        matching(x, y2,inputs);
        System.out.println("======全桥:");
        matching(x, y3,inputs);
    }
}


相关文章
|
1月前
|
Java
Java代码居然能搞定自动化温控
Java代码居然能搞定自动化温控
17 0
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
66 1
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
【2月更文挑战第12天】《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程) 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器。按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome。因此宏哥这里主要介绍一下如何启动这三大浏览器即可,其他浏览器类似的方法,照猫画虎就可以了。
42 1
|
21天前
|
Web App开发 前端开发 Java
《手把手教你》系列技巧篇(九)-java+ selenium自动化测试-元素定位大法之By name(详细教程)
【4月更文挑战第1天】 这篇教程介绍了如何使用Selenium Webdriver通过name属性来定位网页元素,作为系列教程的一部分,之前讲解了id定位,后续还会有其他六种定位方法。文中以百度搜索为例,详细说明了定位搜索框(name=&quot;wd&quot;)并输入关键词“北京宏哥”的步骤,包括手动操作流程、编写自动化脚本以及代码实现。此外,还提供了查看和理解Selenium源码的方法,强调了`open implementation`选项用于查看方法的具体实现。整个过程旨在帮助读者学习Selenium的元素定位,并实践自动化测试。
40 0
|
1月前
|
Web App开发 存储 JavaScript
《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)
【2月更文挑战第17天】本文介绍了Web自动化测试的核心——元素定位。文章首先强调了定位元素的重要性,指出找不到元素则无法进行后续操作。Selenium提供八种定位方法,包括By id、name、class name等。其中,By id是最简单快捷的方式。文章还阐述了自动化测试的步骤:定位元素、操作元素、验证结果和记录测试结果。此外,讨论了如何选择定位方法,推荐优先使用简单稳定的方式,如id,其次考虑其他方法。最后,作者提供了Chrome浏览器的开发者工具作为定位元素的工具,并给出了通过id定位的代码示例。
51 0
|
16天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
36 4
|
1月前
|
监控 数据可视化 Java
Java代码如何轻松实现实验数据监控
Java代码如何轻松实现实验数据监控
24 0
|
1月前
|
存储 算法 Java
Java代码表示实验数据处理系统
Java代码表示实验数据处理系统
11 0
|
15天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
43 0
|
1月前
|
Web App开发 安全 Java
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
【2月更文挑战第16天】本文介绍了如何通过查看源码理解Selenium启动Chrome浏览器的过程。首先,展示了启动Chrome的Java代码,包括设置系统属性、创建WebDriver实例、最大化窗口、设置隐性等待、打开网站、获取页面标题以及关闭浏览器。文章还讲解了包(package)、import导入、setProperty设置系统属性、WebDriver接口、driver实例、manage方法、get方法加载网页以及quit方法退出浏览器的基本概念和作用。适合没有Java基础的读者了解Selenium与Java的交互方式。
46 3

热门文章

最新文章