2015-09-21 6 views
0

Я пытаюсь вычесть матрицу 1 x M из матрицы N x M.Matlab, 1 матрица x M из матрицы N x M

позволяет сказать, что мой 1 х М матрица [1 2]

и мой Н х М матрица [3 4; 5 4; 1 6]

и что я хочу в результате [2 2; 4 2; 0 4]

Я знаю, как это сделать с циклом for и т. Д., Что я пытаюсь выяснить, есть ли математический способ сделать это в одной строке?

Спасибо.

ответ

1

Вы можете использовать функцию repmat, чтобы расширить матрицу 1xM до NxM, а затем выполнить вычитание.

>> M = [1 2]; 
>> N = [3 4; 5 4; 1 6]; 
>> N - repmat(M, length(N), 1) 
ans = 

    2  2 
    4  2 
    0  4 

Кроме того, как указывал Divakar вы можете использовать

>> bsxfun(@minus, N, M) 
ans = 

    2  2 
    4  2 
    0  4 
+0

Поэтому мне нужно построить матрицу с повторяющимися строками, я получаю это. Спасибо. Я надеялся, что будет такой оператор Math для такого рода вещей. – Rudithus

+0

@ Rudithus Существует: 'bsxfun (@ минус, матрица, вектор)', также указан в ссылке dup. 'bsxfun' приносит вашу трансляцию/автоматическую репликацию, а' @ минус' - ваш оператор – Divakar

+0

Я думаю, что поеду с bsxfun, спасибо большое. – Rudithus

Смежные вопросы