Index exceeds the number of array elements. Please Help?

조회 수: 1 (최근 30일)
Emil BUCUR
Emil BUCUR 2019년 10월 21일
댓글: Emil BUCUR 2019년 10월 21일
% 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).

채택된 답변

KALYAN ACHARJYA
KALYAN ACHARJYA 2019년 10월 21일
편집: KALYAN ACHARJYA 2019년 10월 21일
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

추가 답변 (1개)

Guillaume
Guillaume 2019년 10월 21일
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.

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by