我想执行矩阵运算(例如找到给定矩阵A的转置矩阵)
我找到了一些库,例如Colt:
http://acs.lbl.gov/software/colt/api/index.html
http://acs.lbl.gov/software/colt/api/cern/colt/matrix/package-summary.html
在第二个链接中提到如果要打印转置,请键入:
System.out.println(matrix.viewDice());
但是,我不想打印转置矩阵。我想将它存储在第二个矩阵中,例如B,它具有适当的尺寸。
有什么想法吗?
答案 0 :(得分:0)
你见过图书馆Apache Commons Math吗? e.g:
public static void main(String[] args) {
double[][] data = { { 1, 2, 3 }, { 4, 5, 6 } };
RealMatrix matrix = MatrixUtils.createRealMatrix(data);
RealMatrix transpose = matrix.transpose();
}
答案 1 :(得分:0)
这是在la4j(线性代数for Java)中转置矩阵的另一个例子:
// create simple 2D array matrix of double[][] array
Matrix a = new Basic2DMatrix(new double[] {
{ 1.0, 2.0, 3.0 },
{ 4.0, 5.0, 6.0 },
{ 7.0, 8.0, 9.0 }
});
// transpose out-of-place
Matrix b = a.transpose();
// output matrices
System.out.println(a);
System.out.println(b);
答案 2 :(得分:0)
答案 3 :(得分:0)
只是加上我的2美分,因为我正在考虑自己实现矩阵转置。
我们可以在原始的Java 2D数组中添加一个包装器吗?
当您转置矩阵时,根本不转置实际数组,而只是在包装器中将其标记为transpose = true。
当你想通过包装器访问(3,2)的值时,包装器交换行和列索引并返回值(2,3)
您可以对其他操作执行相同操作,直到“真正”需要实际转置为止。
“真的”我的意思是实际的转置矩阵比使用原始矩阵具有计算性能优势,这主要取决于您将对矩阵执行的操作。