필터 지우기
필터 지우기

Array indices must be positive integers or logical values.

조회 수: 43 (최근 30일)
Jocelyn
Jocelyn 2020년 11월 13일
댓글: Steven Lord 2023년 8월 31일
Hello,
My code below is displaying the following error message:
"Array indices must be positive integers or logical values.
Error in Assign5_Prob7 (line 38)
phi(i) = atand(tan(phi_o)+((g*t(i))/Vx_o)*((1/3)*((Vx_o/Vx(i)+ sqrt((Vx_o/Vx(i)))+1)))); "
I don't see anything resulting in a zero within the equation. I'm not sure why this error is displaying. Thank you.
Vy_o = 0.00001;
Vx_o = 2296;
phi_o = atand(Vx_o/Vy_o);
for i = 1:6
x(i) = (i-1)*200*3;
y(i) = (i-1)*200*3;
Vx(i) = (sqrt(Vx_o) - ((k3/2)*x(i)))^2;
t(i) = (x(i)/Vx_o)*sqrt(Vx_o/Vx(i));
phi(i) = atand(tan(phi_o)+((g*t(i))/Vx_o)*((1/3)*((Vx_o/Vx(i)+ sqrt((Vx_o/Vx(i)))+1))));

채택된 답변

Cris LaPierre
Cris LaPierre 2020년 11월 13일
This error means that your index variable i is either
  • negative
  • zero
  • not an integer
Check your code that you did not include and see if you modify the value of i somewhere before getting to line 38.
  댓글 수: 3
Jocelyn
Jocelyn 2020년 11월 13일
I think the error has something to do with the line directly beneath line 38 (which is the phi(i) =... line).
When I took out the tan(i) = line, the phi(i) = line worked and a table was produced.
Once I put the tan(i) = line back into the code, I got the same message as I posted before:
" Array indices must be positive integers or logical values.
Error in Assign5_Prob7 (line 38)
phi(i) = atand(tan(phi_o)+((g*t(i))/Vx_o)*((1/3)*((Vx_o/Vx(i)+ sqrt((Vx_o/Vx(i)))+1))));
Do you have any thoughts as to why this is happening?
phi(i) = atand(tan(phi_o)+((g*t(i))/Vx_o)*((1/3)*((Vx_o/Vx(i)+ sqrt((Vx_o/Vx(i)))+1)))); % firing angle
tan(i)= tan(phi(i))-((g*t(i))/Vx_o)*((1/3)*((Vx_o/Vx(i)+ sqrt((Vx_o/Vx(i)))+1))); % impact angle
end
T = table(x(:)/3, x(:), Vx(:), t(:), phi(:), tan(:), 'VariableNames',{'yards', 'feet', 'striking velocity', 'time of flight', 'firing angle', 'impact angle'})
Cris LaPierre
Cris LaPierre 2020년 11월 13일
편집: Cris LaPierre 2020년 11월 13일
The line below 38 will not cause an error to appear in line 38.
Try sharing all 38 lines of your code, rather than just the one or two around the error. If you want, you can attach your script using the paperclip icon.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Varun Krishna
Varun Krishna 2023년 8월 31일
t=0:0.01:2;
x(t)=3.*sin(10.*pi.*t).*exp(-2.*t);
  댓글 수: 1
Steven Lord
Steven Lord 2023년 8월 31일
There's no such thing as element 0 or element 0.01 of an array in MATLAB. Replace x(t) with just x. Or if you want to create a function that can be evaluated for different values of t, make x an anonymous function.
t=0:0.01:2;
x=3.*sin(10.*pi.*t).*exp(-2.*t);
y = @(t) 3.*sin(10.*pi.*t).*exp(-2.*t);
isequal(x, y(t)) % evaluate y at the points in t
ans = logical
1

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by