Matlab - 将字符串('321')转换为[3,2,1]

Jay*_*ave 7 arrays string matlab

可能重复:
在matlab中将字符串转换为数字数组

我是一名新的Matlab用户.我想知道如何执行上述操作.我完全难过了.

非常感谢您的时间和帮助,在此先感谢您.

Ben*_*igt 12

MatLab中的字符串只是一个字符数组.

您可以减去'0'以保留每个数字的值.

> '321' - '0'

ans =

     3     2     1
Run Code Online (Sandbox Code Playgroud)

  • @RodyOldenhuis为了完整性,你可以添加一个`vec> 0`来处理所有情况,例如vec =' - 321a4&' - '0'; VEC = VEC(VEC <10 VEC> 0);` (3认同)

gev*_*ang 9

或者,不那么神秘str2numstr2double应用于字符数组的每个元素

arrayfun(@str2double, '321')
Run Code Online (Sandbox Code Playgroud)

作为奖励,这也将返回NaN对应于非标量的字符串值,即

>> arrayfun(@str2double, '321a')

ans =

     3     2     1   NaN
Run Code Online (Sandbox Code Playgroud)

因此,对于字符串'321a4',以下内容仅返回有效的标量:

b = arrayfun(@str2double, '321a4')
c = b(~isnan(b))
c =

 3     2     1     4
Run Code Online (Sandbox Code Playgroud)

  • @Jonas只适用于`str2num`,如果一个字符串值对应一个非标量,它将会崩溃. (2认同)