从ejml中的N x M矩阵中减去1 x M矩阵

时间:2018-01-17 00:34:34

标签: java matrix subtraction 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(herehere)的许多答案,但我找不到ejml的简单语法。

1 个答案:

答案 0 :(得分:1)

根据docs

  

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

因此,您可以定义一个方程式,该方程式将使用类似的重复行构造矩阵(我不知道N矩阵的B值):

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是行向量,因为它是列向量使用comas而不是分号,如文档中所述。