my Code is taking long computational time
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hafiz Muhammad Saqib Ashfaq
el 31 de Dic. de 2019
Comentada: Cam Salzberger
el 3 de En. de 2020
My code take long time to run can any one help me.
clc
clear all
L(1) = Link([ 0 0 20 0 0], 'standard');
L(2) = Link([ 0 0 20 0 0], 'standard');
L(3) = Link([ 0 0 20 0 0], 'standard');
Rob=SerialLink(L);
Rob.name='user nput rob';
Rob.base=[1 0 0 70;0 1 0 70;0 0 1 0;0 0 0 1];
a1=input('give vale if th_1 = ');
a2=input('give vale if th_2 = ');
a3=input('give vale if th_3 = ');
th_1 = a1*pi/180;
th_2 = a2*pi/180;
th_3 = a3*pi/180;
Rob.plot([th_1 th_2 th_3],'workspace',[0 140 0 140 0 140],'tilesize',10);
hold on;
view(2);
[o1x o1y]=ginput(1);
plot(o1x,o1y,'O');
[o2x o2y]=ginput(1);
plot(o2x,o2y,'O');
pause(0.01);
Result_Obstacle_th1=zeros([1,180]);
Result_Obstacle_th2=zeros([1,180]);
Result_Obstacle_th3=zeros([1,180]);
Result_Obstacle_th1O2=zeros([1,180]);
Result_Obstacle_th2O2=zeros([1,180]);
Result_Obstacle_th3O2=zeros([1,180]);
i=1;
r = input('if you want to fix th_1 then give val. otherwise -1. your choise = ');
if r==-1
j= 0:160;
else
j= r:r;
end
s=input('if you want to fix th_2 then give val. otherwise val. -1. your choise = ');
if s==-1
k= 0:160;
else
k= s:s;
end
v=input('if you want to fix th_3 then give val. otherwise val. -1. your choise = ');
if v==-1
L= 0:160;
else
L= v:v;
end
for th_11=j
for th_22= k
for th_33= L
for x=0:20
x1=70+x*cos(th_11);
y1=70+x*sin(th_11);
p1 = [x1,y1;o1x,o1y];
pn1 = [x1,y1;o2x,o2y];
s1 =pdist(p1,'euclidean');
r1=num2str(floor(s1));
d1=str2double(r1);
s2 =pdist(pn1,'euclidean');
r2=num2str(floor(s2));
d2=str2double(r2);
x2=70+20*cos(th_11)+x*cos(th_11+th_22);
y2=70+20*sin(th_11)+x*sin(th_11+th_22);
p2 = [x2,y2;o1x,o1y];
pn2 = [x2,y2;o2x,o2y];
s3 =pdist(p2,'euclidean');
r3=num2str(floor(s3));
d3=str2double(r3);
s4 =pdist(pn2,'euclidean');
r4=num2str(floor(s4));
d4=str2double(r4);
x3=70+20*cos(th_11)+20*cos(th_11+th_22)+x*cos(th_11+th_22+th_33);
y3=70+20*sin(th_11)+20*sin(th_11+th_22)+x*sin(th_11+th_22+th_33);
p3 = [x3,y3;o1x,o1y];
pn3 = [x3,y3;o2x,o2y];
s5 =pdist(p3,'euclidean');
r5=num2str(floor(s5));
d5=str2double(r5);
s6 =pdist(pn3,'euclidean');
r6=num2str(floor(s6));
d6=str2double(r6);
if (d1==0 || d3==0 || d5==0)
Result_Obstacle_th1(i)= th_11;
Result_Obstacle_th2(i)= th_22;
Result_Obstacle_th3(i)= th_33;
elseif ( d2==0 || d4==0 || d6==0)
Result_Obstacle_th1O2(i)= th_11;
Result_Obstacle_th2O2(i)= th_22;
Result_Obstacle_th3O2(i)= th_33;
end
end
end
end
end
figure
plot3(Result_Obstacle_th1,Result_Obstacle_th2,Result_Obstacle_th3,'.','color','b','MarkerSize',10)
axis([0 180 0 180 0 180])
hold on
plot3( Result_Obstacle_th1O2,Result_Obstacle_th2O2,Result_Obstacle_th3O2,'.','color','r','MarkerSize',100)
i+1;
2 comentarios
Walter Roberson
el 1 de En. de 2020
You loop up to 161^3*21 = 87638901 times, each time writing to the same output locations indexed by i . After all of the loop iterations are done, after the end of all of the loops, you increment i, when it is not of any use any more.
If your actual code has the i=i+1 inside the inner loop, then lack of pre-allocation is killing performance.
Respuestas (2)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!