Index exceeds the number of array elements (0).

1 view (last 30 days)
prompt= 'Enter theta1 value';
A = input(prompt);
prompt = 'Enter phi1 value';
B = input(prompt);
prompt= 'Enter theta2 value';
A_ = input(prompt);
prompt = 'Enter phi2 value';
B_= input(prompt);
cos(C)= cos(A)*cos(A_)+ sin(A)*sin(A_)*cos(B-B_);
sin(C)= sqrt( 1- (cos(C))^2);
if A == (90)
disp('2D random assembly')
O= 1/180 ;
J = integral2(@(A_,B_) O*sin(C)*sin(A_),0,180,0,180);
else
disp('3D random assemby')
O= 1/360 ;
J = integral2(@(A_,B_) O*sin(C)*sin(A_),0,180,0,180);
end
I am getting error(Index exceeds the number of array elements (0) ) in 10th line. Please explain why I am getting this error?
  1 Comment
KSSV
KSSV on 2 Dec 2020
cos(C)= cos(A)*cos(A_)+ sin(A)*sin(A_)*cos(B-B_);
The above line is not correct.

Sign in to comment.

Accepted Answer

VBBV
VBBV on 2 Dec 2020
Edited: VBBV on 2 Dec 2020
%true
prompt= 'Enter theta1 value';
A = input(prompt);
prompt = 'Enter phi1 value';
B = input(prompt);
prompt= 'Enter theta2 value';
A_ = input(prompt);
prompt = 'Enter phi2 value';
B_= input(prompt);
coC= cos(A)*cos(A_)+ sin(A)*sin(A_)*cos(B-B_);
siC= sqrt( 1- (coC.^2));
if A == (90)
disp('2D random assembly')
O= 1/180 ;
J = integral2(@(A_,B_) O*siC.*sin(A_),0,180,0,180);
else
disp('3D random assemby')
O= 1/360 ;
J = integral2(@(A_,B_) O*siC.*sin(A_),0,180,0,180);
end
You are using parenthesis with undefined index on left side. Try above
  1 Comment
KSSV
KSSV on 2 Dec 2020
You have to consider the angle units in the above.... I don't understand why people are answering the same answer, once it answered.

Sign in to comment.

More Answers (1)

KSSV
KSSV on 2 Dec 2020
As you are expecting the angle to be in degrees, you have to use sind, cosd. If you enter the angles in radians, then use sin, cos.
You need to use like this:
prompt= 'Enter theta1 value';
A = input(prompt);
prompt = 'Enter phi1 value';
B = input(prompt);
prompt= 'Enter theta2 value';
A_ = input(prompt);
prompt = 'Enter phi2 value';
B_= input(prompt);
cosC= cosd(A)*cosd(A_)+ sind(A)*sind(A_)*cosd(B-B_); % consider a different variable name cosC
sinC= sqrt( 1- (cosC)^2); % consider a different variable name sinC
if A == (90)
disp('2D random assembly')
O= 1/180 ;
J = integral2(@(A_,B_) O*sinC*sind(A_),0,180,0,180);
else
disp('3D random assemby')
O= 1/360 ;
J = integral2(@(A_,B_) O*sinC*sind(A_),0,180,0,180);
end

Community Treasure Hunt

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

Start Hunting!