我注意到转换字符串非常酷的方法,比如说
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.
这里发生了什么?
答案 0 :(得分:5)
当你使用带有字符串的算术运算符时,Matlab会将字符串转换为双精度数,将字符串转换为ascii值:
>> double('1')
ans =
49
因此,减法可以正常工作,但加法会产生奇怪的结果
>> '1'+'1'
ans =
98
将字符串数组转换为double会产生双精度的数组,因此“矩阵尺寸必须一致”:
>> double('10')
ans =
49 48
因此,虽然减去'0'
因此是一个很酷的捷径,但我建议您使用STR2DOUBLE来避免混淆。