How to plot step functions in Matlab
33 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
VBBV
2020 年 10 月 31 日
編集済み: VBBV
2020 年 10 月 31 日
%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 件のコメント
VBBV
2020 年 10 月 31 日
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
その他の回答 (1 件)
Vladimir Sovkov
2020 年 10 月 31 日
編集済み: Vladimir Sovkov
2020 年 10 月 31 日
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 件のコメント
Vladimir Sovkov
2020 年 10 月 31 日
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!