Вычитание двух векторов в Matlab

Возможный дубликат:
MATLAB: Матрица различий

Я не уверен, как сформулировать этот вопрос, но я сделаю все возможное:

У меня есть два вектора, A и B.

Я хочу вычесть все значения в A на каждое отдельное значение B.

Например, все значения в A вычитаются из первого значения B. Затем все значения A вычитаются из второго значения B и так далее.

Результирующая матрица должна быть length(A) x length(B) и выглядеть примерно так:

Ans = [A - B(1); A - B(2); A - B(3); ....... ]

Есть ли способ сделать это без цикла?


person gtdevel    schedule 17.11.2012    source источник
comment
Связанный дубликат вычитает A из A. Вычитание B из A должно быть несложным.   -  person Jonas    schedule 17.11.2012
comment
Вчера я ответил Точно на тот же вопрос, приложив усилия. Здесь.   -  person Acorbe    schedule 17.11.2012


Ответы (2)


Строка вроде @Memming и @Jonas говорит:

Result = bsxfun(@minus, a, b');
person Barney Szabolcs    schedule 17.11.2012
comment
Спасибо за оптимизацию. Это быстрее. - person gtdevel; 17.11.2012

person    schedule
comment
@Memming ... и более эффективное использование памяти - person dinkelk; 18.11.2012
comment
bsxfun не позволяет использовать переменные, объявленные с помощью sym.. - person oak; 08.04.2015