Como evaluar una funcion por tramos f(t) y graficarla al igual que las funciones de matlab

Lucho
05 de Octubre del 2009
tengo el siguiente programa
y=func(t)
Va1=algo;
Va2=otroalgo;

if (0<=t & t<=1)
y=Va1;
elseif(1<t & t<=1.5)
y=Va1+2*(Va2-Va1)*(t-1)
elseif(1.5<t & t<=2.5)
y=Va1;
elseif(2.5<t & t<=3)
y=Va1+2*(Va2-Va1)*(t-2.5)
end
no puedo graficarla para un t=[a:.1:b];
plot(t,func(t));%Porque no se grafica al igual que las funciones propias de matlab como cos(t), sin(t) etc...?

Conejo dancer
05 de Octubre del 2009
Hola, Yo puedo dar respuesta a tu duda. Lo que sucede es que la variable t que estas usando debe ser un vector de valores de lo contrario la funci贸n estar铆a regresando un valor 煤nico y al graficar solo se mostrar铆a un solo punto. La soluci贸n es que consideres a t como un vector de valores. Te escribo la funci贸n que hice para esto, espero te funcione, saludos

function f=functramos1( t )
%Definicion de una funci贸n por tramos1

%Obtiene el tama帽o del vetor t
n=numel(t);

for i=1:1:n
if t(i)>=0 && t(i)<0.5
f(i)=1;
elseif t(i)>=0.5 && t(i)<1
f(i)=3.5;
else
f(i)=0;
end

end

end

Miguel Angel
05 de Octubre del 2009
Prueba a poner plot(t,feval('func',t)); seguramente as铆 si te pinte.Si no va as铆 ejecuta primero el comando: hold on;.
Si con esto no te llega a pintar lo que quieres existe una forma menos bonita, guarda los valores de la evaluacion de la funcion en otro vector del mismo tama帽o que te, por ejemplo z y pon: plot(t,z), esto te lo pinta bien seguro.