Правое деление на вектор строки в MATLAB - PullRequest
0 голосов
/ 26 сентября 2018

Я прав, разделив матрицу 20x60 с именем A на векторную строку 1x60 с именем B.Итак, C = A/B, где C - это вектор 20x1.

Что делает MATLAB в A/B?Я нашел ответ в mrdivide

Если A - это прямоугольная матрица размером m на n с m ~= n, а B - это матрица с n столбцов, затем x = B/A возвращает решение системы уравнений x*A = B.

наименьших квадратов, но когда я пытаюсь C*B или B*C, я получаю ошибку измерения, почему

1 Ответ

0 голосов
/ 26 сентября 2018

Как вы сказали, вводя команду C = A/B, вы решаете C в уравнении C * B = A.Если у вас есть следующая система (2 вместо 20 и 3 вместо 60, для простоты).

К первому вопросу Матлаб смотрит на проблему и пытается ее решить.В некоторых случаях у системы не будет решения.В этом случае Matlab вычисляет одну из комбинаций, которые решают большинство уравнений (как показано в примере на странице математических работ).

На второй вопрос о том, почему вы получаете ошибку измерения:

b = [b1 b2 b3]

A = [a11 a12 a13]
    [a21 a22 a23]

C = [c1]
    [c2]

MatLab будет обрабатывать то, что вы пытаетесь сделать с векторами, потому что он автоматически распознает C*B как внешний продукт.

Продукты B*C для матриц не будут работать, потому что автоматизм Matlab не будет учитывать возможность внешнего продукта.Если вы хотите выполнить исчисление, вам придется использовать продукт kronecker:

kron(C,B)

Вывод для этого примера:

=[c1*b1 c1*b2 c1*b3]
 [c2*b1 c2*b2 c2*b3]

Надеюсь, это поможет вам.

Ура, Пабло

...