なぜ式は:
test = cast(strtrim('3'), 'uint8')
51を生成しますか?
これは、次の場合にも当てはまります。
test = cast(strtrim('3'), 'int8')
ありがとう。
51 は文字のASCII コード'3'
であるためです。
文字列を数値 3 に変換する場合は、次を使用する必要があります。
uint8(str2double('3'))
str2double
は末尾のスペースを無視するので、その必要はないことに注意してくださいstrtrim
。
編集
文字列が数値演算で使用されると、Matlab は自動的にそれを ASCII 値に変換します。例えば
>> '1'+1
ans =
50
51 は文字のASCII 値'3'
であるためです。
これは、「3」がmatlabのASCII文字と見なされるためです。符号付きまたは符号なし整数(この場合は8ビット)としてキャストすることにより、MatlabにASCII「3」を10進数に変換するように要求しています。この場合、10進数は51です。より多くの変換を確認したい場合は、ここに基本的なドキュメントがあります。