По предложению @ Andras я попробовал определитель в соответствии с вики-страницей :
По предложению @ beaker это работает:
d = (a(:, 1) .* b(:, 2) - a(:, 2) .* b(:, 1)) - (a(:, 1) .* b(:, 3) - a(:, 3) .* b(:, 1)) + (a(:, 2) .* b(:, 3) - a(:, 3) .* b(:, 2))
Это более медленные альтернативы:
d = arrayfun(@(x)det([a(x,:);b(x,:);ones(1,3)]),1:length(a));
d = bsxfun(@times, a(:,1), b(:,2))+ bsxfun(@times, a(:,2), b(:,3)) +...
bsxfun(@times, a(:,3), b(:,1))- bsxfun(@times, a(:,3), b(:,2)) -...
bsxfun(@times, a(:,2), b(:,1))- bsxfun(@times, a(:,1), b(:,3));