我注意到一个非常酷的转换字符串的方法,比方说
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 将字符串转换为 double 值,从而将字符串转换为 ascii 值:
>> double('1')
ans =
49
因此,减法可以正常工作,尽管加法会产生奇怪的结果
>> '1'+'1'
ans =
98
将字符串数组转换为 double 的数组,因此“矩阵维度必须一致”:
>> double('10')
ans =
49 48
因此,虽然减去 '0'
是一个很酷的快捷方式,但我建议您使用 STR2DOUBLE而是为了避免混淆。
关于string - 解释 "str - ' 0'"字符串转整数时的用法。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072541/