Is it possible to vectorize for only one input?

Illustration
sykim14 - 2023-03-18T13:28:11+00:00
Question: Is it possible to vectorize for only one input?

Suppose there are two variables.   v1 = [1 2 3]; m1 = [1 2 3; 4 5 6]; I hope to create another matrix m2, having the same size with m1, and its (i, j) component is defined by m2(i, j) = sum(v1 > m1(i, j)) In this case, clearly one solution is use "for" loop twice. m2 = zeros(2, 3); for i = 1:2 for j = 1:3 m2(i, j) = sum(v1 > m1(i, j)); end end However I want to know whether we can apply vectorization for the above procedure. To do this, I first thought that I may create an anonymous function   test_opr = @(v, x) sum(v > x);   and vectorize for the only latter input(while fixing v). But I couldn't find a proper way to do this. Is there any useful trick or alternative?

Expert Answer

Profile picture of John Williams John Williams answered . 2025-11-20

 v1 = [1, 2, 3]; m1 = [1, 2, 3; 4, 5, 6];
 your_result = arrayfun(@(x) sum(v1 > x), m1)

Though this is just syntactic sugar around looping. Maybe faster, would need to test:

 v1 = reshape(v1,1,1,[]);
 alt_result = sum(bsxfun(@lt,m1,v1),3)

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!