Is it possible to vectorize for only one input?

Technical Source
2 min readMar 18, 2023

--

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));    endend

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?

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

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)

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet