How to plot step functions in Matlab

32 visualizzazioni (ultimi 30 giorni)
Sangani Prithvi
Sangani Prithvi il 31 Ott 2020
Commentato: VBBV il 31 Ott 2020
I have a function involving
y=o for x<o;
y=exp(-x)*cos(x) for 0<x<2pi();
y=2*exp(-x)*cos(x) for x>2pi();
please help me to plot such a type of function in xy space

Risposta accettata

VBBV
VBBV il 31 Ott 2020
Modificato: VBBV il 31 Ott 2020
%if true
% code
%end
x = -2*pi:0.1:3*pi;
for i = 1:length(x);
if x(i)<0;
y(i)=0;
elseif x(i)<=2*pi & x(i)>=0 ;
y(i) = exp(-x(i))*cos(x(i)*pi/180);
elseif x(i) > 2*pi ;
y(i) = 100*exp(-x(i))*cos(x(i)*pi/180);
end;
end;
plot(x,y)
axis([-2*pi 3*pi -0.2 1])
  3 Commenti
Sangani Prithvi
Sangani Prithvi il 31 Ott 2020
y(i) = 100*exp(-x(i))*cos(x(i)*pi/180
can you please explain why did you mutliply with 100 in the above equation?
VBBV
VBBV il 31 Ott 2020
you can use a smaller number, say 2, but
y(i) = 2*exp(-x(i))*cos(x(i)*pi/180);
gives a very small step height compared to
y(i) = exp(-x(i))*cos(x(i)*pi/180)
So in the graph it is not noticeable clearly
Thats why i used to 100 which amplifies the step height.
Remember in both cases the step nature does not vary. i,e, decreasing exponential function according to your equations

Accedi per commentare.

Più risposte (1)

Vladimir Sovkov
Vladimir Sovkov il 31 Ott 2020
Modificato: Vladimir Sovkov il 31 Ott 2020
syms x;
y=piecewise(x<0,0, 0<=x<2*pi,exp(-x).*cos(x), x>=2*pi,2*exp(-x).*cos(x));
t=linspace(-pi,4*pi,1000);
plot(t,subs(y,x,t));
  2 Commenti
Vladimir Sovkov
Vladimir Sovkov il 31 Ott 2020
Welcome.
By the way, in the question, you did not specify what the function is equal to at the boundary points x=0 and x=2*pi; in the code I implied the right limit but you can easily alter this convention.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by