Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的数学矩阵_Java_Arrays_Matrix - Fatal编程技术网

Java中的数学矩阵

Java中的数学矩阵,java,arrays,matrix,Java,Arrays,Matrix,据我所知,数学中使用的二维矩阵可以使用二维数组在Java中创建。当然,你可以用真正的数学矩阵做一些事情,比如加和减。但是,使用Java时,您需要编写代码来实现这一点,并且有一些库可以提供这一功能 我想知道的是,Java数组是否是处理矩阵数据的最佳方式。我可以想象这样的情况:2d矩阵中填充了一些索引,而由于数据的性质,很多索引都是空白的。对我来说,这提出了一个问题,这是否是对内存空间的浪费,特别是当矩阵非常大并且有很多空索引时 专门的Java数学库是否以不同的方式处理矩阵,而不依赖于2d数组?或者

据我所知,数学中使用的二维矩阵可以使用二维数组在Java中创建。当然,你可以用真正的数学矩阵做一些事情,比如加和减。但是,使用Java时,您需要编写代码来实现这一点,并且有一些库可以提供这一功能

我想知道的是,Java数组是否是处理矩阵数据的最佳方式。我可以想象这样的情况:2d矩阵中填充了一些索引,而由于数据的性质,很多索引都是空白的。对我来说,这提出了一个问题,这是否是对内存空间的浪费,特别是当矩阵非常大并且有很多空索引时

专门的Java数学库是否以不同的方式处理矩阵,而不依赖于2d数组?或者他们也使用常规Java数组,只是在浪费内存的情况下生活?

以下几点:

  • 永远不要创建二维数组的矩阵。最好是使用带有接受2个参数的类访问器的一维数组。原因纯粹是为了表现。分配连续的内存块时,CPU有机会在一个内存页中分配整个矩阵,这将最大限度地减少缓存未命中,从而提高性能

  • 有许多零的矩阵称为。在使用稀疏矩阵和数组中有许多零之间,总是要进行权衡

    • 连续数组将允许编译器使用,用于加法、减法等
    • 如果零的相对数量非常高,并且您以一种智能的方式实现它,那么非连续数组将更快
  • 我不相信java为稀疏矩阵提供了一个库,但我肯定还有一些。我是C++开发者,在我的学术生涯中,我处理过矩阵<强>很多>。一个具有简单和高级接口的著名C++库是.</p>

  • 希望这能有所帮助。

    关于效率,请参阅。有一些复杂的java数学库,其中包含稀疏矩阵和其他内容。java中的IMO矩阵数学是一个巨大的痛点,对于库来说并没有明确的赢家。也就是说,我通常使用高效的Java矩阵库。只要矩阵大小不变大,它就相当有效。