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