Решение, аналогичное ThomasIsCoding's , но обобщенное на любое количество измерений (= столбцов). Для ответа Томаса необходимо, чтобы A
и B
имели ровно 2 столбца для использования комплексного представления. Здесь мы используем 3-е измерение массива вместо комплексных значений:
n = 3; % number of spatial dimensions for computing the L2 norm
A = 10*rand(20,n);
B = 10*rand(4,n);
C = sum((reshape(A,[],1,n) - reshape(B,1,[],n)).^2,3)
Сначала мы изменяем форму A
, чтобы ее строки оставались строками, а столбцы располагались вдоль 3-го измерения массива. Мы изменяем B
аналогично, но его строки становятся столбцами, а его столбцы перемещаются в 3-е измерение. Это расположение первых двух измерений соответствует расположению выходных данных C
.
Далее мы возьмем разницу (используя неявное одноэлементное расширение, для более старых версий MATLAB вам нужно было бы использовать bsxfun
), квадрат и сумма по 3-му измерению.