How to avoid the two loops with a less memory consumption.

Hello everyone,
I have used two for loops for one problem. Can anyone suggest me a way to avoid the loops and reduce the time. is it possible to calculate A without using a for loop ? I am using R2015a.
for i=1:100000
for j=1:100000
A(i,j)=exp(-(x(i)-x(j))-(y(i)-y(j)));
end
end

 Accepted Answer

A = exp(x(:).'-x(:) + y(:).'-y(:));
This requires MATLAB version >=R2016b. For earlier versions replace the subtraction with bsxfun:
A = exp(bsxfun(@minus,x(:).',x(:)) + bsxfun(@minus,y(:).',y(:)));
Note: avoiding loops will not have "less memory consumption", most likely more.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 7 Sep 2020

Edited:

on 7 Sep 2020

Community Treasure Hunt

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

Start Hunting!