MATLAB Answers


how can I get binary output '0'or '1' according to sign of the input value ?

Asked by Sarfaraz Ahmed on 24 Oct 2018
Latest activity Edited by Sarfaraz Ahmed on 25 Oct 2018
Hi. I have output of ADC which give sampled value either negative or positive. I want to decode these values in binary form '1' or '0'. let say if positive value appear, the logic should show '1' otherwise '0'. it means it should be sign-based detection. this logic I need at the end of the system (difference block in attached file). is there any block in simulink or can I make customized code in MATLAB function block ? It would be appreciated if someone can help in this regard.
Thanks in Advance


Have a look on sign
The sign function gives -1 and 1. for example: V = [-0.5 3]; sign(V) Ans -1 1
But I want to get 0 and 1 because I have to forward these binary to XOR logic gate. so how can I decode signed values into binary ?

Sign in to comment.

1 Answer

Answer by Ghetto blaster on 24 Oct 2018
 Accepted Answer

Actually what you would want is step function. heaviside() is most optimal except I assume that you want for the input value of 0 for output to also be 0? In that case you would need to set the HeavisideAtOrigin to be 0. Also I assume you want output to be logical or floating point? heaviside outputs floating.
oldparam = sympref('HeavisideAtOrigin',0);
output_logical = heaviside(input_voltage);


Thank you so much. It's working. I will embed these code lines in MATLAB function block and integrate with my ADC design. I accepted your answer.
So nice of you!
No worries Ahmed. Glad I could help you.
Hi. I embed this code in MATLAB function block but it shows an error that: Size mismatch for MATLAB expression 'heaviside'. Expected = 1x1 Actual = 1x0 and if I put output_logical = logical(heaviside(input_voltage)); then it shows an error Class mismatch for variable 'logical'. Expected 'double', Actual 'logical'.
it must be some dimension error how can I resolve this error ? snap is attached.

Sign in to comment.