Error using piecewise function
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I am trying to create this piecewise function but there is an error: 'Incorrect number or types of inputs or outputs for function 'piecewise'.
Error in Q2 (line 7)
x1 = piecewise(ABSt<=1, 1-ABSt,0,0);'
this is the code:
t = linspace(-5,5,1001);
ABSt = abs(t)
x1 = piecewise(ABSt<=1, 1-ABSt,0,0);
I am trying to creat x1 = 1-abs(t) while abs(t) is smaller or equal to 1, otherwise x1=0
is anyone knows what is wrong and how to fix it?
thank you!
0 commentaires
Réponse acceptée
Torsten
le 16 Nov 2022
Modifié(e) : Torsten
le 16 Nov 2022
"piecewise" works on symbolic arguments.
Define
t = linspace(-5,5,1001);
x1 = (1-abs(t)).*(abs(t)<=1);
plot(t,x1)
instead.
3 commentaires
Torsten
le 16 Nov 2022
As I wrote, you can define piecewise functions for symbolic inputs:
syms t
f = piecewise(abs(t)<=1,1-abs(t),0)
fplot(f)
but this doesn't work for numerical inputs for t.
The .* makes it work because you must multiply the numerical vector (1-abs(t)) with the logical vector (abs(t)<=1) elementwise.
The product as written means: multiply the element 1-abs(t(i)) with 1 (for true) if abs(t(i))<=1, else with 0 (for false). The result is a vector x1 that is 1-abs(t(i)) at position i if abs(t(i)) <=1 and 0 else.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

