Index exceeds the number of array elements (0).

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

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

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)

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

Asked:

on 2 Dec 2020

Commented:

on 2 Dec 2020

Community Treasure Hunt

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

Start Hunting!