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.

这里发生了什么?

4

1 回答 1

5

当您对字符串使用算术运算符时,Matlab 将字符串转换为双精度数,从而将字符串转换为 ascii 值:

>> double('1')
ans =
    49

因此,减法可以正常工作,尽管加法会产生奇怪的结果

>> '1'+'1'
ans =
    98

将字符串数组转换为双精度数组会产生双精度数组,因此“矩阵维度必须一致”:

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

因此,虽然减法'0'是一个很酷的捷径,但我建议您改用STR2DOUBLE以避免混淆。

于 2012-08-22T12:07:53.450 回答