我有2个向量:
a = [1, 2, 3];
b = [1.5 2.5 3.5];
我希望得到以下内容
[sum(a(1) < b), sum(a(2) < b), sum(a(3) < b)]
% 3 2 1
有没有办法在不使用arrayfun
或for
循环的情况下执行此操作?
我正在使用MATLAB R2014b。
答案 0 :(得分:1)
您可以使用bsxfun
将操作应用于a
中与b
中每个元素相关的每个元素。操作将是@lt
(小于)。然后,我们可以对列进行求和,以计算b
中a
中的值大于sum(bsxfun(@lt, a, b.'), 1)
中的每个值的数量。
bsxfun
在较新版本的MATLAB(R2016b及更新版本)上,您可以省略sum(a < b.', 1)
并执行以下操作
Activities