I am getting the following error for the below code: Subscript indices must either be real positive integers or logicals. How can i remove that error.

1 view (last 30 days)
clc
clear all
g=9.81;
u=10;
t=0:.1:10;
y(1)=0;
while (y(t)>=0)
y(t)=(u*t)-(0.5*g*t.*t)
end
  1 Comment
Sattik Basu
Sattik Basu on 19 Aug 2017
Edited: Walter Roberson on 20 Aug 2017
i found a different solution to this:
g=9.81;
u=100;
t=0;
y=0;
while (y>=0)
disp(['at t=', num2str(t) ', the height is=', num2str(y)])
t=t+0.1;
y=(u*t)-(0.5*g*t^2);
end
why does this work and not the first one?

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 20 Aug 2017
You have
t=0:.1:10;
so t is a vector containing 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
You have
while (y(t)>=0)
but t is the vector discussed above, so your line is equivalent to asking
while y([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) >= 0
However, this attempts to subscript y with 0 and non-integers.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!