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は文字列をdoubleとしてキャストし、文字列をASCII値に変換します。

>> double('1')
ans =
    49

したがって、減算は問題なく機能しますが、加算は奇妙な結果をもたらします

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

文字列の配列をdoubleに変換すると、doubleの配列になるため、「行列の次元は一致する必要があります」:

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

したがって、減算'0'はクールなショートカットですが、混乱を避けるために、代わりにSTR2DOUBLEを使用することをお勧めします。

于 2012-08-22T12:07:53.450 に答える