Умножение матриц в Java - PullRequest
       41

Умножение матриц в Java

1 голос
/ 17 апреля 2010

Я хотел сделать матричное умножение в Java, и скорость должна быть очень хорошей.

Я думал о вызове R через Java, чтобы достичь этого.

У меня была пара вопросов:

  1. Является ли вызов R с использованием Java хорошей идеей? Если да, есть ли примеры кода, которыми можно поделиться?

  2. Каковы другие способы умножения матриц в Java?

Обновление:

Мой коллега, вышедший из фирмы, был программистом на C #, который был вынужден написать код Java, включающий умножение матриц.

- Он написал свой собственный класс DataTable на Java, чтобы иметь возможность

а) создавать индексы для сортировки и объединения с другими таблицами данных

б) умножение матриц.

Итак, я хочу по существу очистить код, и мысль о том, что использование чего-то вроде R в Java поможет мне сосредоточиться на бизнес-логике, а не на сортировке, объединении, умножении матриц и т. Д.

Ответы [ 5 ]

4 голосов
/ 17 апреля 2010

Существует несколько вопросов об использовании стекового потока при использовании R с Java. Это просто с JRI . См. Этот вопрос для примера: R из Java . Как только вы интегрируете свой код, выполнение умножения матриц в R становится тривиальным. Если у вас есть две матрицы, a и b, вы просто позвоните: a %*% b.

Если вы хотите остаться на чистой Java и работать с математикой, вы также можете воспользоваться Colt (адаптировано из JAMA ) , хотя вам может быть лучше просто , используя JAMA напрямую .

Другой вариант - использовать Incanter от Clojure (который обеспечивает обертку вокруг Parallel Colt , среди прочего), а затем вызывать его Баночка с Явы. Интегрировать Clojure в Java несложно, и если вам нужно только матричное умножение, вам будет проще, чем использовать R.

4 голосов
/ 17 апреля 2010

Вы можете использовать матричный пакет, такой как JAMA .

0 голосов
/ 01 октября 2014

Еще один голос за jblas. все методы такие, как вы ожидаете.

0 голосов
/ 13 февраля 2012

Parallel colt - эффективная библиотека для выполнения матричных операций.

Другие хорошие матричные библиотеки будут включать jblas и ujmp

Все эти пакеты эффективны.jblas мой личный фаворит.Он имеет хорошую документацию и прямолинейный в отличие от ujmp

0 голосов
/ 31 января 2012

EJML представляется многообещающим новым для быстрого умножения. У них есть тесты на их сайте, чтобы показать, что, по их словам, быстрые времена для умножения матриц.

...