将字符串转换为整数时,解释一下使用"str - '0'"的方法。

4
我注意到一种非常酷的方法来转换字符串,比如说:
str = '1234'

将一个数组转换为向量可以使用这个技巧。
vec = str - '0'
 = [1 2 3 4]

我的问题是为什么这个方法有效?

另外,类似于:

vec1 = str -'1'
  = [0 1 2 3]

但是
vec2 = str - '10'
  Error using  - 
  Matrix dimensions must agree.

这里正在发生什么?
1个回答

5
当您使用字符串进行算术运算时,Matlab会将字符串转换为双精度数,这会将字符串转换为ASCII值:
>> double('1')
ans =
    49

因此,减法可以正常工作,但加法会产生奇怪的结果。
>> '1'+'1'
ans =
    98

将字符串数组转换为双精度数会得到一个双精度数的数组,因此“矩阵维度必须相同”:

>> double('10')
ans =
    49    48

因此,虽然减去'0'是一种很酷的快捷方式,但我建议您使用STR2DOUBLE来避免混淆。

谢谢,@Jonas。解释得很清楚! - AGS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接