How to code a multivalued sign function
Mostrar comentarios más antiguos
Hello all Please could you help me i want to code a multivalued signum function that is defined by
Let x ∈ R. The multivalued signum function Sgn: R ⇒ R is defined as:
sgn(x) ={ 1 if x > 0 −1 if x < 0 [−1, 1] if x = 0.
If x ∈ R^n then the multivalued signum function Sgn: R^n⇒R^n
is defined as: Sgn(x) : = (Sgn(x1), . . . , Sgn(xn))^T
Thank you so much for your help Best regards
Respuesta aceptada
Más respuestas (1)
Two simple versions: the first assumes that the input is a scalar numeric:
function v = sgn(x)
assert(isscalar(x),'input must be scalar')
a = [-1,1];
v = a([x<=0,x>=0]);
end
>> sgn(-5)
ans = -1
>> sgn(0)
ans = [-1,1]
>> sgn(5)
ans = 1
The second allows a vector input:
function v = sgn(x)
assert(isvector(x),'input must be vector')
a = [-1;1];
u = arrayfun(@(n)a([n<=0,n>=0]),x(:),'UniformOutput',false);
v = reshape(cell2mat(u),1:isrow(x),1:iscolumn(x));
end
>> sgn([-5,0,5])
ans = -1 -1 1 1
Categorías
Más información sobre Digital Filter Design en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!