Asked by Angel Hiram Torres Mota
on 21 Jun 2019 at 2:33

I need to add my equation (60+(2.13*(t^2))-(0.0013*(t^4))+(0.000034*(t^4.751))) to a function but I cant figure it out. What I've tried just comes out as an error. Please help.

k=1;

for t = 0:2:100;

h(k) = (60+(2.13*(t^2))-(0.0013*(t^4))+(0.000034*(t^4.751)));

k = k+1;

if h>=0

disp(h);

end

end

This is what I tried but it doesnt work.

k=1;

for t = 0:2:100;

h(k) = rocket(t)

k = k+1;

if h>=0

disp(h);

end

end

function h(k) = rocket(t)

h(k) = (60+(2.13*(t^2))-(0.0013*(t^4))+(0.000034*(t^4.751)));

end

Answer by madhan ravi
on 21 Jun 2019 at 2:43

Edited by madhan ravi
on 21 Jun 2019 at 2:54

Accepted Answer

Note: the following can be done trivially without a loop by vectorisation.

t = 0:2:100;

h=zeros(size(t));

for k=1:numel(t);

h(k) = rocket(t(k))

if h(k)>=0

disp(h(k));

end

end

function h = rocket(t)

h = (60+(2.13*(t^2))-(0.0013*(t^4))+(0.000034*(t^4.751)));

end

Without loop:

t = 0:2:100;

h = rocket(t);

fprintf('h >= 0:%f\n',h(h>=0))

function h = rocket(t)

h = (60+(2.13*(t.^2))-(0.0013*(t.^4))+(0.000034*(t.^4.751)));

end

Angel Hiram Torres Mota
on 21 Jun 2019 at 2:56

Exactly what I was looking for, thanks!

Sign in to comment.

Answer by Star Strider
on 21 Jun 2019 at 2:44

Except for your ‘rocket’ function, most of that looks as though it should work.

Leave out the subscript reference when you are declaring your function, and within your function, since ‘k’ is not defined within your function, and is not necessary anyway.

Try this instead:

function h = rocket(t)

h = (60+(2.13*(t^2))-(0.0013*(t^4))+(0.000034*(t^4.751)));

end

Angel Hiram Torres Mota
on 21 Jun 2019 at 2:55

I wish I could accept all of the 3 answers. Thanks for the help!

Star Strider
on 21 Jun 2019 at 3:03

Sign in to comment.

Answer by Adam Danz
on 21 Jun 2019 at 2:51

Edited by Adam Danz
on 21 Jun 2019 at 2:58

rocketFcn = @(x)(60+(2.13*(x^2))-(0.0013*(x^4))+(0.000034*(x^4.751)));

tm = 0:2:100;

h = zeros(size(tm));

for t = 1:numel(tm)

h(t) = rocketFcn(tm(t));

if h(t)>=0

disp(h(t));

end

end

Note that I added ".^" to your rocket function. This allows you to apply vectors to its input so you can avoid the loop.

tm = 0:2:100

h2 = rocketFcn(tm);

% The two lines above produces the same output as the for-loop!

isequal(h,h2)

Angel Hiram Torres Mota
on 21 Jun 2019 at 2:55

Thank you!

Adam Danz
on 21 Jun 2019 at 2:58

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.