从ejml中的N x M矩阵减去1 x M矩阵
Subtract 1 x M matrix from N x M matrix in ejml
假设ejml 中有一个1 x M (A) 和N x M (B) 个SimpleMatrix 对象,有没有一种简单的方法可以从B 中减去A?我一直在寻找一种方法将 A 的行重复为 B 的大小,但没有找到轻松完成此操作的方法。
SimpleMatrix A = new SimpleMatrix(1, 2);
SimpleMatrix B = new SimpleMatrix(2, 2);
A.set(1.0);
B.setRow(0, 0, 2.0, 2.0);
B.setRow(1, 0, 4.0, 4.0);
// Throws java.lang.IllegalArgumentException
// The 'a' and 'b' matrices do not have compatible dimensions
SimpleMatrix C = B.minus(A);
// Expecting
// 1 1
// 3 3
许多答案都使用 matlab (here and here),但我找不到 ejml 的简单语法。
根据docs:
Will concat A and B along their columns and then concat the result with C along their rows.
[A,B;C]
所以你可以定义一个方程,它将从重复的行中构建一个矩阵(我不知道 B
矩阵的 N
值):
A.equation("A = [A,A,A]")
或
A.equation("A = [A,A,A]", "A")
另一种选择是使用SimpleBase.concatColumns(SimpleBase...)
,它看起来像这样:
A = A.concatColumns(A,A)
假设 A 是 1xM
它将产生 3xM
矩阵并将其存储在 A
中。如果你想动态构建这样的数组,你可以连接 "A," N 次(当然没有尾随昏迷)或传递 N - 1
次矩阵 A
来运行。
更新
抱歉,很晚了,我错误地认为 A 是行向量,因为它是列向量,使用逗号而不是分号,如文档中所述。
假设ejml 中有一个1 x M (A) 和N x M (B) 个SimpleMatrix 对象,有没有一种简单的方法可以从B 中减去A?我一直在寻找一种方法将 A 的行重复为 B 的大小,但没有找到轻松完成此操作的方法。
SimpleMatrix A = new SimpleMatrix(1, 2);
SimpleMatrix B = new SimpleMatrix(2, 2);
A.set(1.0);
B.setRow(0, 0, 2.0, 2.0);
B.setRow(1, 0, 4.0, 4.0);
// Throws java.lang.IllegalArgumentException
// The 'a' and 'b' matrices do not have compatible dimensions
SimpleMatrix C = B.minus(A);
// Expecting
// 1 1
// 3 3
许多答案都使用 matlab (here and here),但我找不到 ejml 的简单语法。
根据docs:
Will concat A and B along their columns and then concat the result with C along their rows. [A,B;C]
所以你可以定义一个方程,它将从重复的行中构建一个矩阵(我不知道 B
矩阵的 N
值):
A.equation("A = [A,A,A]")
或
A.equation("A = [A,A,A]", "A")
另一种选择是使用SimpleBase.concatColumns(SimpleBase...)
,它看起来像这样:
A = A.concatColumns(A,A)
假设 A 是 1xM
它将产生 3xM
矩阵并将其存储在 A
中。如果你想动态构建这样的数组,你可以连接 "A," N 次(当然没有尾随昏迷)或传递 N - 1
次矩阵 A
来运行。
更新
抱歉,很晚了,我错误地认为 A 是行向量,因为它是列向量,使用逗号而不是分号,如文档中所述。