如何使用Java找到偏差

Posted

技术标签:

【中文标题】如何使用Java找到偏差【英文标题】:How to find the deviation using Java 【发布时间】:2019-04-10 07:30:49 【问题描述】:

我想用下面的代码找出两条绘图线之间的偏差,但由于某种原因感觉不对。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;

import javax.swing.*;

public class DrawLine extends JPanel   

  private static final long serialVersionUID = 1L;

  LinePoint[] lineA = new LinePoint[5];
  LinePoint[] lineB = new LinePoint[5];

  public void paintComponent(Graphics g) 

     for(int i = 0; i < lineA.length; i++) 
         lineA[i] =  new LinePoint();
         lineB[i] =  new LinePoint();

     

     int initialLocationPoint = 10;
     for(int i = 0; i<lineA.length; i++) 
         lineA[i].x = initialLocationPoint;
         lineA[i].y = 100;
         lineB[i].x = initialLocationPoint;
         lineB[i].y = 100;
         g.drawOval((int)lineA[i].x, (int)lineA[i].y, 1, 1);
         g.drawOval((int)lineB[i].x, (int)lineB[i].y, 1, 1);
         initialLocationPoint +=1; 
     

     System.out.println("DEVIATION: " + this.calculateDifference());

  

  public double calculateDifference() 
      double deviation = 0.0;
      double deviationPerCordinate = 0.0;
      for (int i = 0; i < lineA.length; i++) 
          deviationPerCordinate = Math.sqrt( Math.pow(2, (lineB[i].x - lineA[i].x))  + Math.pow(2,(lineB[i].y - lineA[i].y)));
          System.out.println("deviationPerCordinate " + i + ": " + deviationPerCordinate);
          deviation = deviation + deviationPerCordinate;
      
      return deviation;
  

  public static void main(String[] args) 
    JFrame.setDefaultLookAndFeelDecorated(true);

    JFrame frame = new JFrame("Draw Line");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBackground(Color.white);
    frame.setSize(400, 400);

    DrawLine panel = new DrawLine();

    frame.add(panel);

    frame.setVisible(true);
  

结果:

deviationPerCordinate 0: 1.4142135623730951

deviationPerCordinate 1:1.4142135623730951

deviationPerCordinate 2:1.4142135623730951

deviationPerCordinate 3:1.4142135623730951

deviationPerCordinate 4: 1.4142135623730951

偏差:7.0710678118654755

预期结果:

这不应该返回 0 吗?因为两张图都在相同的位置/绳索上,所以根本没有区别。

有人知道我在这里做错了什么吗?是公式吗?

【问题讨论】:

你能说出你在计算什么以及为什么需要它的定义吗? 我正在尝试查看两条线的差异/距离,增量,偏差 idk 如何调用它。我需要它来娱乐! "我不知道怎么称呼它" = 我不知道我想做什么 修正它:偏差PerCordinate = Math.sqrt((lineB[i].y - lineA[i].y) * (lineB[i].y - lineA[i].y) + ( lineB[i].x - lineA[i].x) * (lineB[i].x - lineA[i].x)); 【参考方案1】:

假设您使用欧几里得距离来计算偏差,那么您的公式是错误的。使用 Math 库在 Java 中对值求平方的正确方法是 Math.pow(x, 2)。话虽如此,这个Math.pow(2, (lineB[i].x - lineA[i].x)) 应该是Math.pow((lineB[i].x - lineA[i].x), 2)y 坐标相同。

【讨论】:

以上是关于如何使用Java找到偏差的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何计算标准化频率的标准偏差

使用线程时如何减少时间偏差?

如何使用Tensorflows GradientTape()计算偏差

如何显示 LinearRegression() 的权重和偏差?

如何在不使用 numpy 的情况下计算 python 中的标准偏差?

您如何使用 scikit-learn 中的惯性计算差距统计的标准偏差?