# Floor function with a space giving an array output

2 views (last 30 days)
Alfie Green on 24 Sep 2020
Commented: Alfie Green on 26 Sep 2020
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?

Stephen Cobeldick on 24 Sep 2020
Edited: Stephen Cobeldick on 24 Sep 2020
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.

Turlough Hughes on 24 Sep 2020
You might also find the documentation on unicode and ASCII values informative.
Steven Lord on 24 Sep 2020
Command syntax has been there right from the very start of MATLAB. I recommend avoiding it.
There are places where it is appropriate and places where it is not. I wouldn't recommend avoiding it entirely, just use it for functions with inputs that are supposed to be text data:
help plot
doc ode45
hold on
close all
save allTheVariables.mat
Using it for functions that expect numeric data ... yeah, that's probably better to avoid.
Alfie Green on 26 Sep 2020
Thanks for the help, I'll keep that in mind in the future.

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by