Error using piecewise function

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!

 Respuesta aceptada

Torsten
Torsten el 16 de Nov. de 2022
Editada: Torsten el 16 de Nov. de 2022
"piecewise" works on symbolic arguments.
Define
t = linspace(-5,5,1001);
x1 = (1-abs(t)).*(abs(t)<=1);
plot(t,x1)
instead.

3 comentarios

Engi
Engi el 16 de Nov. de 2022
Thank you, it worked.
Just to understand the logic behind it, (I am pretty new in Matlab) - why shall we not write 'picewise' before (1-abs(t)).*(abs(t)<=1);?
and why is the .* makes it work as we wanted?
As I wrote, you can define piecewise functions for symbolic inputs:
syms t
f = piecewise(abs(t)<=1,1-abs(t),0)
f = 
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.
Engi
Engi el 19 de Nov. de 2022
Alright, thank you for your help.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.

Productos

Versión

R2022b

Etiquetas

Preguntada:

el 16 de Nov. de 2022

Comentada:

el 19 de Nov. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by