Дистанционная матрица с Apache Poi - PullRequest
0 голосов
/ 10 февраля 2019

Я довольно новичок в программировании на Java, особенно делаю это для создания файла Excel.Но, возможно, кто-то может помочь мне с этой проблемой.

В настоящее время я создал через Apache Poi и Eclipse электронную таблицу в Excel.Там я получил 3 столбца и 40 строк.Они заполнены координатами (x и y-координаты) и их именами (в моем случае 1 - 40).Теперь, когда я наконец получил эти случайные числа, я хочу создать матрицу расстояний (с евклидовым расстоянием) между этими точками.Например, я хочу, чтобы это выглядело так:

1 2 3 1 0 1 2 2 1 0 4 3 2 4 0

Я не уверен, как получить эти созданные случайные числа ирассчитать с ними.Как и я, я не уверен, как реализовать формулу для евклидова расстояния.Было бы здорово, если бы кто-то мог мне помочь!Заранее спасибо!

Вот мой код:

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import java.util.Random;

public class poiexample {

    public static void main(String[] args) throws Exception { 

        XSSFWorkbook Datei = new XSSFWorkbook();
        FileOutputStream out = new FileOutputStream (new File ("Dateien.xlsx"));




        for(int  i=0;i<101;i++)
        {   XSSFSheet Blatt = Datei.createSheet("Tabelle" + i);
            XSSFRow row1 = Blatt.createRow(0);
            row1.createCell(2).setCellValue("x");
            row1.createCell(3).setCellValue("y");

            for(int j=0; j<25; j++) {
            XSSFRow row = Blatt.createRow(j+1);
            row.createCell(0).setCellValue("P"+j);
            row.createCell(1).setCellValue(j+1);
            row.createCell(2).setCellValue(Math.round(Math.random()*10));
            row.createCell(3).setCellValue(Math.round(Math.random()*10));

        }
            for(int j=25; j<40; j++) {
                XSSFRow row = Blatt.createRow(j+1);
                row.createCell(0).setCellValue("D");
                row.createCell(1).setCellValue(j+1);
                row.createCell(2).setCellValue(Math.round(Math.random()*10));
                row.createCell(3).setCellValue(Math.round(Math.random()*10));

            }


        } 


    try {



        Datei.write(out);
        out.close();

    }
catch(Exception e) {
    System.out.println(e);
}
    System.out.println("Excel file created");


}

}

1 Ответ

0 голосов
/ 10 февраля 2019

Я вижу, что вы генерируете координаты и записываете в таблицу Excel.Затем вы хотите создать евклидову матрицу.

Я предлагаю сначала получить эти координаты в двумерном массиве и прийти к алгоритму для вычисления евклидовой матрицы расстояний.Тогда нужно просто записать все координаты и матрицу расстояний в файл Excel.

Если у вас уже есть координаты в Excel, просто прочитайте Excel и заполните массив 2D, а затемпозвоните в свою программу, чтобы рассчитать и сгенерировать евклидову матрицу

Конечно, могут быть и лучшие решения, об этом я могу подумать прямо сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...