Index exceeds the number of array elements (0).

1 回表示 (過去 30 日間)
BALPARTAP SINGH
BALPARTAP SINGH 2020 年 12 月 2 日
コメント済み: KSSV 2020 年 12 月 2 日
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 件のコメント
KSSV
KSSV 2020 年 12 月 2 日
cos(C)= cos(A)*cos(A_)+ sin(A)*sin(A_)*cos(B-B_);
The above line is not correct.

サインインしてコメントする。

採用された回答

VBBV
VBBV 2020 年 12 月 2 日
編集済み: VBBV 2020 年 12 月 2 日
%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 件のコメント
KSSV
KSSV 2020 年 12 月 2 日
You have to consider the angle units in the above.... I don't understand why people are answering the same answer, once it answered.

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2020 年 12 月 2 日
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

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by