Matlab的动态类型较弱,这就是导致这种奇怪行为的原因。我不明白的是具体发生了什么,因为这个结果真的让我很惊讶。
编辑:为了澄清,我描述的明显是Matlab在ASCII格式中存储字符所导致的结果,这也在评论中提到过。我更感兴趣的是Matlab如何处理它的变量,特别是何时以及如何为值分配类型/标签。
谢谢。
'1'
在Matlab中,1x1矩阵是由字符组成的。
'123'
这是一个由3个字符组成的1行3列的矩阵。
正如预期的那样,
1
返回一个1x1的双精度数。
现在如果我输入
'1' + 1
我得到的是一个1-by-1的双精度数值,值为50。如果我输入
'123' + 1
我得到了一个1x3的双精度数组
[ 50 51 52 ]
此外,如果我输入
'a' + 1
结果是
98
在一个1x1的双精度中。
我猜这与Matlab如何以ASCII形式存储char变量有关,但它究竟是如何处理的呢?数据实际上是单类型和标记的,还是有其他的处理方式?
谢谢。