Hello everyone, I hope you are doing well. I need some help with my matlab project. I''m finding the velocity and time after each 1 meter displacement. It''s good when I''m doing that and I''m actually getting correct results. However, I couldn''t find the velocity and time after for example 1.5 or 1.6 meter. this is my program, so can you please help me with it.
function [v,t]=freefall(h)
g=9.81;
%Gravity in m^2/s
for k=1:h
v(k)=sqrt(2*g*k);
end
for
k=1:h
t(k)=sqrt(2*k/g);
end
plot(t,v)
xlabel(''Time
(s)'')
ylabel(''Velocity (m/s)'')
title(''Free fall: velocity vs time'')

 Respuesta aceptada

Star Strider
Star Strider el 16 de Mayo de 2016

1 voto

Use the interp1 function.
If I understand your code correctly, this will work. Add these lines to the end of your code:
k = 1:h; % Displacement
dspl_intrp = [1.5; 1.6]; % Displacements To Interpolate
vt_intrp = interp1(k, [v' t'], [1.5; 1.6], 'linear'); % Interpolate Velocity & Time
fprintf(1, 'Displacement %.2f, Velocity = %.2f, Time = %.2f\n', [dspl_intrp vt_intrp]')
Displacement 1.50, Velocity = 5.35, Time = 0.55
Displacement 1.60, Velocity = 5.53, Time = 0.56
I added the fprintf call to show that the result appears to be correct.

4 comentarios

Abdullah Jizani
Abdullah Jizani el 16 de Mayo de 2016
I think you misunderstood my question. I'm asking for how to get a result for each 0.1 m.
Star Strider
Star Strider el 16 de Mayo de 2016
That’s even easier.
Set:
k = 1 : 0.1 : h;
Abdullah Jizani
Abdullah Jizani el 16 de Mayo de 2016
but it shows me this error ??? Attempted to access v(1.1); index must be a positive integer or logical.
Error in ==> freefall at 7 v(k)=sqrt(2*g*k);
Star Strider
Star Strider el 16 de Mayo de 2016
I forgot that you used it as an index.
This works:
g=9.81; %Gravity in m^2/s
d = 1 : 0.1 : h; % Displacement Vector
for k=1:length(d)
v(k)=sqrt(2*g*d(k));
end
for k=1:length(d)
t(k)=sqrt(2*d(k)/g);
end
plot(t,v)
xlabel('Time (s)')
ylabel('Velocity (m/s)')
title('Free fall: velocity vs time')
Note that here you have to change the ‘k’ reference as the independent variable in your calculations to ‘d(k)’. This also gives you flexibility to make ‘d’ anything you want, even negative or zero, because ‘k’ is now derived from it.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 16 de Mayo de 2016

Editada:

el 26 de Mayo de 2016

Community Treasure Hunt

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

Start Hunting!

Translated by