Вычтите 1 x M матрицу из N x M матрицы в ejml

Предполагая, что объекты SimpleMatrix 1 x M (A) и N x M (B) в ejml, существует ли простой способ вычесть A из B? Я искал способ повторить строки 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 ( здесь и здесь), но я не смог найти простой синтаксис для ejml.

1 ответ

Решение

Согласно документам:

Объединит 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)

Предполагая, что А 1xM это произведет 3xM матрица и сохранить его в A, Если вы хотите построить такой массив динамически, вы можете просто объединить "A" N раз (без конечной комы, конечно) или пройти N - 1 временная матрица A функционировать.

ОБНОВИТЬ

Извините, поздно я ошибочно предположил, что A - это вектор строки, поскольку в векторе столбцов вместо запятой используются запятые, как описано в документации.

Другие вопросы по тегам