使用 ojalgo:从数组创建矩阵
Using ojalgo: Create Matrix from Array
我正在尝试使用 ojAlgo 来解决 Java 中的一些线性代数问题。我在问是否有任何 "clever" 方法可以使用现有数组创建矩阵。
这是我天真的做法:
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);
这个可以,但是每次都做太麻烦了。我可以写一个 class 来做到这一点,并在每次我想做的时候调用它,但我想知道是否有更简单的方法。
有没有更简单的方法?
您真的要创建一个(不可变的)BasicMatrix 实例吗?您是否阅读了 ojAlgo Getting Started 关于在不同矩阵实现之间进行选择以及如何实例化它们的维基页面?
有一个class/method
org.ojalgo.array.ArrayUtils#wrapAccess2D(双[][])
这可能对你有帮助,但这取决于你的下一步是什么......
...或者你为什么不直接调用 PrimitiveMatrix.FACTORY.rows(myArray);
我正在尝试使用 ojAlgo 来解决 Java 中的一些线性代数问题。我在问是否有任何 "clever" 方法可以使用现有数组创建矩阵。
这是我天真的做法:
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);
这个可以,但是每次都做太麻烦了。我可以写一个 class 来做到这一点,并在每次我想做的时候调用它,但我想知道是否有更简单的方法。
有没有更简单的方法?
您真的要创建一个(不可变的)BasicMatrix 实例吗?您是否阅读了 ojAlgo Getting Started 关于在不同矩阵实现之间进行选择以及如何实例化它们的维基页面?
有一个class/method org.ojalgo.array.ArrayUtils#wrapAccess2D(双[][]) 这可能对你有帮助,但这取决于你的下一步是什么......
...或者你为什么不直接调用 PrimitiveMatrix.FACTORY.rows(myArray);