Piecewise to Heaviside problem
18 views (last 30 days)
Show older comments
Hi all,
Trying to create a plot using heaviside function after being given a piecewise function. The code, I managed to get 2 different results, so I am not sure which is correct.
The piecewise function is the following:
x^2 - 1; if 0 <= x < 2
f(x) = 2x - 3; if 2 <= x < 5
sin(x); if x >= 5
My code is the following.
y = (t.^2-1).*[heaviside(t)-heaviside(t-2)]+(2.*t-3).*[heaviside(t-2)-heaviside(t-5)]+sin(t).*heaviside(t-5);
plot(t,y)
I may have made a mistake in the conversion to heaviside, and I am not so well versed in the step function, so it's a little challenging to analyze the graph to see whether or not it is correct. Any input is greatly appreciated!
Accepted Answer
Ameer Hamza
on 26 Nov 2020
Yes, your code is correct. Following will work
t = 0:0.01:10;
y = (t.^2-1).*[heaviside(t)-heaviside(t-2)]+(2.*t-3).*[heaviside(t-2)-heaviside(t-5)]+sin(t).*heaviside(t-5);
plot(t,y)
However, an easier solution is to use piecewise()
syms x
f(x) = piecewise(0<=x<2, x^2-1, 2<=x<5, 2*x-3, 5<=x, sin(x));
fplot(f, [0 10])
More Answers (1)
Walter Roberson
on 26 Nov 2020
syms f(x) t
f(x) = piecewise(x<0, 0, 0 <= x & x < 2, x^2 - 1, 2 <= x & x < 5, 2*x - 3, 5 <= x, sin(x));
f(t)
sympref('HeavisideAtOrigin', 1);
y = (t.^2-1).*[heaviside(t)-heaviside(t-2)]+(2.*t-3).*[heaviside(t-2)-heaviside(t-5)]+sin(t).*heaviside(t-5)
yp = rewrite(y, 'piecewise')
fplot(f(t)-y, [-1 10])
The formulas come out the same except in a different order of cases, and the difference between the two appears to be all zero
See Also
Categories
Find more on Assumptions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


