package\u0020xx;
import\u0020java.util.ArrayList;
import\u0020java.util.Arrays;
import\u0020java.util.List;
import\u0020java.util.Scanner;

public\u0020class\u0020xx\u0020{
\u0020\u0020public\u0020static\u0020void\u0020main(String[]\u0020args)\u0020{
\u0020\u0020\u0020\u0020Scanner\u0020scanner\u0020=\u0020new\u0020Scanner(System.in);
\u0020\u0020\u0020\u0020List\u0020numbers\u0020=\u0020new\u0020ArrayList<>();
\u0020\u0020\u0020\u0020int\u0020input;
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020System.out.print("请输入数字(输入0结束):");
\u0020\u0020\u0020\u0020while\u0020(true)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020input\u0020=\u0020scanner.nextInt();
\u0020\u0020\u0020\u0020\u0020\u0020if\u0020(input\u0020==\u00200)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020break;
\u0020\u0020\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020\u0020\u0020numbers.add(input);
\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020System.out.println("输入的数字数组为:");
\u0020\u0020\u0020\u0020System.out.println(numbers);
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020//\u0020Call\u0020ErrorNormalization\u0020method
\u0020\u0020\u0020\u0020ErrorNormalization(numbers.stream().mapToDouble(Integer::doubleValue).toArray());
\u0020\u0020}\u0020
\u0020\u0020
\u0020\u0020public\u0020static\u0020void\u0020ErrorNormalization(double[]\u0020num)\u0020{
\u0020\u0020\u0020\u0020double[]\u0020errors\u0020=\u0020num;
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020//\u0020调用normalizeErrors方法进行误差归一化
\u0020\u0020\u0020\u0020double[]\u0020normalizedErrors\u0020=\u0020normalizeErrors(errors);
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020System.out.println("原始误差数组:\u0020"\u0020+\u0020Arrays.toString(errors));
\u0020\u0020\u0020\u0020System.out.println("归一化误差数组:\u0020"\u0020+\u0020Arrays.toString(normalizedErrors));
\u0020\u0020}\u0020
\u0020\u0020
\u0020\u0020public\u0020static\u0020double[]\u0020normalizeErrors(double[]\u0020errors)\u0020{
\u0020\u0020\u0020\u0020//\u0020找到最大误差和最小误差
\u0020\u0020\u0020\u0020double\u0020maxError\u0020=\u0020Double.NEGATIVE_INFINITY;
\u0020\u0020\u0020\u0020double\u0020minError\u0020=\u0020Double.POSITIVE_INFINITY;
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020for\u0020(double\u0020error\u0020:\u0020errors)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020if\u0020(error\u0020>\u0020maxError)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020maxError\u0020=\u0020error;
\u0020\u0020\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020\u0020\u0020if\u0020(error\u0020<\u0020minError)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020minError\u0020=\u0020error;
\u0020\u0020\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020//\u0020归一化误差数组
\u0020\u0020\u0020\u0020double[]\u0020normalizedErrors\u0020=\u0020new\u0020double[errors.length];
\u0020\u0020\u0020\u0020
\u0020\u0020\u0020\u0020if\u0020(errors.length\u0020>\u00201)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020for\u0020(int\u0020i\u0020=\u00200;\u0020i\u0020<\u0020errors.length;\u0020i++)\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020\u0020\u0020normalizedErrors[i]\u0020=\u0020(errors[i]\u0020-\u0020minError)\u0020/\u0020(maxError\u0020-\u0020minError);
\u0020\u0020\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020}\u0020else\u0020{
\u0020\u0020\u0020\u0020\u0020\u0020normalizedErrors\u0020=\u0020new\u0020double[]{1.0};
\u0020\u0020\u0020\u0020}\u0020
\u0020\u0020\u0020\u0020return\u0020normalizedErrors;
\u0020\u0020}\u0020
\u0020\u0020
\u0020\u0020public\u0020static\u0020float\u0020err(float\u0020setSpeed,\u0020float\u0020actualSpeed)\u0020{
\u0020\u0020\u0020\u0020float\u0020err\u0020=\u0020setSpeed\u0020-\u0020actualSpeed;
\u0020\u0020\u0020\u0020return\u0020err;
\u0020\u0020}\u0020
}\u0020

Java 误差归一化算法代码示例 - 优化误差数据

原文地址: https://www.cveoy.top/t/topic/pysd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录