Index exceeds the number of array elements. Please Help?

1 Ansicht (letzte 30 Tage)
Emil BUCUR
Emil BUCUR am 21 Okt. 2019
Kommentiert: Emil BUCUR am 21 Okt. 2019
% Generates optimized trajectory for the robotics arm problem
function [] = generate_optimized_traj(x)
d1 = 66.04;
d3 = 14.91;
d4 = 43.31;
a2 = 43.18;
a3 = 2.03;
for i = 1:100
t = -pi + (i-1)*0.063;
theta1 = x(i);
theta2 = x(i+100);
theta3 = x(i+200);
c1 = cos(theta1);
c2 = cos(theta2);
s1 = sin(theta1);
s2 = sin(theta2);
c23 = cos(theta2+theta3);
s23 = sin(theta2+theta3);
f1(i) = c1*(a2*c2 + a3*c23 - d4*s23) - d3*s1;
f2(i) = s1*(a2*c2 + a3*c23 - d4*s23) + d3*c1;
f3(i) = d1 - a2*s2 - a3*s23 -d4*c23;
end
plot3(f1,f2,f3,'r*')
end
This is the code where the error is encountered. This appears on line 15 ( theta2=x(i+100) ).
The code above should generate the optimal trajectory for the arm of an industrial robot.
f1,f2 and f3 are kinetic equations.
Does anyone have any idea why i get the following error on line 15: Index exceeds the number of array elements (2).

Akzeptierte Antwort

KALYAN ACHARJYA
KALYAN ACHARJYA am 21 Okt. 2019
Bearbeitet: KALYAN ACHARJYA am 21 Okt. 2019
Read about array indexing, suppose you have x=[2 3 4], its having 3 length, if you want acess x(5), it will shows Index exceeds the number of array elements., because x have only three elements , hence
x(1) OK
x(2) OK
x(3) OK
..
x(4) Invalid ....
Beacuse , what you have pass the value of x, I have no idea, but you trying to access the more than 100 elements of x (i+100)..so on in for loop (100 iterration loop), is it?
Is this? Pass any 1 D array as x
function []=generate_optimized_traj(x)
d1 = 66.04;
d3 = 14.91;
d4 = 43.31;
a2 = 43.18;
a3 = 2.03;
for i=1:length(x)
t=-pi+(i-1)*0.063;
theta1=x(i);
theta2=x(i)+100;
theta3=x(i)+200;
c1 = cos(theta1);
c2 = cos(theta2);
s1 = sin(theta1);
s2 = sin(theta2);
c23 = cos(theta2+theta3);
s23 = sin(theta2+theta3);
f1(i) = c1*(a2*c2 + a3*c23 - d4*s23) - d3*s1;
f2(i) = s1*(a2*c2 + a3*c23 - d4*s23) + d3*c1;
f3(i) = d1 - a2*s2 - a3*s23 -d4*c23;
end
plot3(f1,f2,f3,'r*')
end

Weitere Antworten (1)

Guillaume
Guillaume am 21 Okt. 2019
Does anyone have any idea why i get the following error on line 15
Because the x you passed has less than 300 elements. Since i goes up to 100 and you try to access x(i+200), x needs to have at least 300 elements.

Kategorien

Mehr zu Get Started with Optimization Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by