MATLAB: Is the signal builder not giving precise outputs

builderexactimpreciseoutputprecisesignalsimulink

I have a signal builder block with the following signal:
I connect my signal builder block to a "To Workspace" block.
I am using a fixed step solver with sample time of 0.05s. Hence, the output variable "simout" should contain the values of the signal at every Peak and Trough, that is, it should only contain 0's and 1's.
However, at certain time steps my output contains 0.999999999999999 instead of 1 and 1e-5 instead of 0.
Why is the output from my Signal Builder block not precise?

Best Answer

By looking at "simout.Time" we can see that the time step taken by Simulink is slightly different than the time specified in the Signal Builder. This small value forces Simulink to interpolate between the specified point, leading to the small difference you see.
Following are two workarounds:
1. Specify your signal and time values as described in the following link:
2. Use the Signal Editor block in place of the signal builder block. This is a new block that covers some of the functionalities of the Signal Builder block and we would be interested to know if this addresses your needs.