2

假设 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(herehere)的许多答案,但我找不到ejml的简单语法。

4

1 回答 1

1

根据文档

将沿着它们的列连接 A 和 B,然后沿着它们的行将结果与 C 连接。[A,B;C]

所以你可以定义一个方程,它将从重复的行中构造一个矩阵(我不知道矩阵的NB):

A.equation("A = [A,A,A]")

或者

A.equation("A = [A,A,A]", "A")

另一种选择是使用SimpleBase.concatColumns(SimpleBase...),它看起来像这样:

A = A.concatColumns(A,A)

假设 A1xM将产生3xM矩阵并将其存储在A. 如果您希望动态构建这样的数组,您可以连接“A”,N 次(当然没有尾随昏迷)或传递N - 1时间矩阵A来运行。

更新

抱歉,我错误地认为 A 是行向量,因为它是列向量,使用逗号而不是分号,如文档中所述,迟到了。

于 2018-01-17T00:42:09.137 回答