【问题标题】:Using ojalgo: Create Matrix from Array使用 ojalgo:从数组创建矩阵
【发布时间】:2015-11-19 01:31:18
【问题描述】:

我正在尝试使用ojAlgo 来解决Java 中的一些线性代数问题。我在问是否有任何“聪明”的方法来使用现有数组创建矩阵。

这是我幼稚的做法:

final double[][] myArray = {
    { 1.1, 1.2, 1.3, 1.4, 1.5 },
    { 2.1, 2.2, 2.3, 2.4, 2.5 },
    { 3.1, 3.2, 3.3, 3.4, 3.5 }
};

final Builder<PrimitiveMatrix> myBuilder = PrimitiveMatrix.getBuilder(myArray.length, myArray[0].length);
for (int i = 0; i < myArray.length; i++) {
    for (int j = 0; j < myArray[0].length; j++) {
        myBuilder.set(i, j, myArray[i][j]);
    }
}

final PrimitiveMatrix myMatrix = myBuilder.build();
System.out.println(myMatrix);

这行得通,但是每次都做太麻烦了。我可以编写一个这样做的类,并在每次我想这样做时调用它,但我想知道是否有更简单的方法。

有没有更简单的方法?

【问题讨论】:

  • double[][] myArray 不是矩阵吗?
  • 是吗?我可以以某种方式将它与其他矩阵相乘吗?
  • 矩阵乘法有一定规律。
  • 矩阵乘法和许多其他矩阵运算是线性代数的全部内容。由于这些操作太多,无法自己正确有效地处理,因此我下载了库 ojalgo(还有更多,但这是我最喜欢的一个)。这可能工作正常,但我在创建 ojalgo 认为的矩阵时遇到问题:PrimitiveMatrix。因此我的帖子。

标签: java arrays matrix ojalgo


【解决方案1】:

你真的想创建一个(不可变的)BasicMatrix 实例吗?您是否阅读过 ojAlgo Getting Started wiki 页面关于在不同的矩阵实现之间进行选择以及如何实例化它们?

有一个类/方法 org.ojalgo.array.ArrayUtils#wrapAccess2D(double[][]) 这可能会对你有所帮助,但这取决于你的下一步是什么......

...或者你为什么不直接打电话给PrimitiveMatrix.FACTORY.rows(myArray);

【讨论】:

  • 非常感谢您不厌其烦地回答我的问题。我想亲自对你写 ojalgo 表示感谢!你的回答很有帮助!我实际上已经阅读了您提到的 wiki 页面,但我不太了解它,因为我对这一切都比较陌生(加上由于导入问题,从该站点复制粘贴使我悲惨地失败了)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多