MATLAB: Floor function with a space giving an array output

floorMATLAB

I was playing around with the floor function and put a space after it followed by a number in square brackets. This gave me the interesting output of an array which seemed to have nothing to do with the number I had put in.
>> floor [17.23]
ans =
91 49 55 46 50 51 93
Having played around with it for a bit, it also worked for curly braces and without any form of bracket at all. From trying different things, I think that it somehow produces an array of the number assigned to each symbol (like in UNICODE), but I don't know why and I can't find anything in the documentation.
>> floor 1
ans =
49
>> floor [1]
ans =
91 49 93
It also had the same problem when doing it with variables:
>> a = 5
a =
5
>> floor [a]
ans =
91 97 93
Does anyone know why this is happening? Or whether it is even meant to happen or if it is a bug?

Best Answer

Your example uses command syntax, which is explained here:
The equivalent function syntax is this:
floor('[17.23]')
Because character codes do not have fractional parts, the floor operation does not change any of the character codes, so your example is exactly equivalent to simply listing the character codes themselves:
double('[17.23]')
or even just
+'[17.23]'
"Does anyone know why this is happening?"
Due to MATLAB's origin as an interactive wrapper around Fortran, and the coding fashions at the time.
"Or whether it is even meant to happen or if it is a bug?"
Command syntax has been there right from the very start of MATLAB. I recommend avoiding it.