How to make this loop faster?
    5 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
Hello,
The following code takes 30 seconds to execute. I can't make it any faster.
Any suggestion?
Thanks!
function [ at] = obstacleAttenuation( Ant, Movel, Obstaculo,mapa )
    tic
    fprintf('\nInside obstacleAttenuation function!\n');
    at = zeros(mapa.xlength, mapa.ylength);
    for xi=1:mapa.xlength
        for yi=1:mapa.ylength
            att = 0;
            [x, y] = bresenham(Ant.Antena_x, Ant.Antena_y, Movel.x(xi), Movel.y(yi));
            for i = 1:length(x)
                Obs = Obstaculo(x(i), y(i));
                att = att + Obs;
            end
            at(xi, yi) = att; 
%             Obs = Obstaculo(x(1:length(x)), y(1:length(x)));
%             att = sum(sum(Obs));
%             at(xi, yi) = att;
        end
    end
 fprintf('\nExit obstacleAttenuation function!\n');
 toc
end
NOTE: I am using R2016a version.
0 Kommentare
Antworten (1)
  Jesús Zambrano
    
 am 27 Dez. 2020
        Is it possible to enter vectors as arguments in the function Obstaculo and get a vector as result? If so, then you could try replacing:
for i = 1:length(x)
    Obs = Obstaculo(x(i), y(i));
    att = att + Obs;
end
By:
i=1:length(x);
att = sum(Obstaculo(x(i), y(i)));
12 Kommentare
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


