Vectorizing Loops over Matrix Elements

I was wondering if there is a general method for vectorizing code of the form:
A = zeros(n,m);
for i = 1:n
for j = 1:m
A(i,j) = f[i, j]
end
end
where f[i,j] is some function of i and j.

 Accepted Answer

If the function f "knows" how to cope with two vectors as inputs that don't have the same size: Yes.
E.g.
n = 3;
m = 5;
f = @(i,j) i.'*j;
A = f(1:n,1:m)
A = 3×5
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15

3 Comments

Thanks for your help! Can you explain what line 3 is doing? I'm not sure what the @(i,j) part of the code does. Is this where I insert my function?
Thanks
Torsten
Torsten on 5 Jun 2023
Edited: Torsten on 5 Jun 2023
f is a function handle that depends on the formal inputs i and j:
Got it. Thanks for your help!

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022b

Asked:

on 23 May 2023

Commented:

on 5 Jun 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!