java - java中的matlab矩阵函数

标签 java matlab

我注意到 matlab 执行某些矩阵函数的速度非常快,例如将 5 添加到 n*n 数组的所有元素几乎立即发生,即使矩阵很大也是如此,因为您不必遍历每个元素,执行同样在 Java 中,如果矩阵很大,for 循环将永远持续下去。

我有两个问题,java 中是否有高效的内置类来执行矩阵运算,第二个问题是我如何编写代码以更有效地更新 java 中大矩阵的所有元素。

最佳答案

刚刚无意中看到这篇文章,我想我会投入两分钱。我是 EJML 的作者,我还在为 Java 库制定性能和稳定性基准测试。虽然确定算法的速度有几个问题,但 Mikhail 是正确的,缓存是大型矩阵性能中的一个非常重要的问题。对于较小的矩阵,库开销变得更加重要。

由于数组访问的开销,纯 Java 库比高度优化的 c 库慢,即使算法完全相同。一些库通过调用 native 代码来解决这个问题。你可能想看看

http://code.google.com/p/matrix-toolkits-java/

正是这样做的。将内存从 java 复制到 native 库会产生一些开销,但对于大型矩阵来说,这是微不足道的。

有关纯 Java 性能(我正在研究的)的基准,请查看:

http://code.google.com/p/java-matrix-benchmark/

另一个基准在这里:

http://www.ujmp.org/java-matrix/benchmark/

这些基准测试中的任何一个都应该让您对大型矩阵的性能有一个很好的了解。

关于java - java中的matlab矩阵函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881172/

相关文章:

java - 使正则表达式替换成为可选

string - 如何在Matlab中将字符串变量转换为 boolean 值?

c++ - 如果输入图像矩阵实际上是复数类型,MATLAB imresize() 会做什么?

matlab - 在圆形图像区域应用二维高斯滤波器 - Matlab

matlab - MATLAB 函数 plot 和 line 有何不同?

matlab - 对数 Matlab

java - 将 S3Client 升级到 S3AsyncClient 如何获取 Publisher<ByteBuffer>?

java - apache ignite 1.6.0 xa 资源在现有 jta 事务中登记

java - glass gdk 的文件权限

java - 为什么堆内存使用量和加载类的数量不断增加?