Borrar filtros
Borrar filtros

How can I get my script to run properly?

1 visualización (últimos 30 días)
Aaron
Aaron el 11 de Sept. de 2013
I was initially having trouble with my function, but now since that is running okay, my script is not. It involves a for loop and I'm not sure what I'm doing wrong.
Here is my function file:
function v = piecewise_fun(t)
if 0 <= t & t < 8
v = (10.*t).^2 - (5.*t);
elseif 8 <= t & t < 16
v = 624 - 5.*t;
elseif 16 <= t & t < 26
v = 36.*t + 12.*(t-16).^2;
elseif t >= 26
v = 2136*exp(-0.1.*(t-26));
end
end
And here is what I have for my script file:
t = -5:50
hold on
for i =-5:t % I'm not sure if this is even right!?
v = piecewise_fun(t);
end
plot(v,t)
So, I get the following error:
Undefined function or variable 'v'. Error in piecewise_plot (line 6) plot(v,t)

Respuesta aceptada

Image Analyst
Image Analyst el 11 de Sept. de 2013
Editada: Image Analyst el 11 de Sept. de 2013
Not right. Try it this way, in an m-file called aaron.m:
function aaron
t = -5:50
for k = 1 : length(t)
v(k) = piecewise_fun(t(k));
end
plot(t, v, 'b*-', 'LineWidth', 2);
grid on;
xlabel('t', 'FontSize', 30);
ylabel('v', 'FontSize', 30);
title('v vs. t', 'FontSize', 30);
function v = piecewise_fun(t)
v = nan; % Initialize.
if 0 <= t && t < 8
v = (10.*t).^2 - (5.*t);
elseif 8 <= t && t < 16
v = 624 - 5.*t;
elseif 16 <= t && t < 26
v = 36.*t + 12.*(t-16).^2;
elseif t >= 26
v = 2136*exp(-0.1.*(t-26));
end
Both functions are in the same m-file, called aaron.m, or whatever you want just make sure the name is on the first function line.
  1 comentario
Aaron
Aaron el 11 de Sept. de 2013
Thank you! This really helped me out!!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by