# How to plot step functions in Matlab

122 ビュー (過去 30 日間)
Sangani Prithvi 2020 年 10 月 31 日
コメント済み: VBBV 2020 年 10 月 31 日
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();

サインインしてコメントする。

### 採用された回答

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 件のコメント1 件の古いコメントを表示1 件の古いコメントを非表示
Sangani Prithvi 2020 年 10 月 31 日
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 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 日

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 件のコメントなしを表示なしを非表示
Sangani Prithvi 2020 年 10 月 31 日
thank you
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.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

### Community Treasure Hunt

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

Start Hunting!