str2number - Fast replacement for str2num and str2double

版本 1.0.0 (11.8 KB) 作者: Yair Altman
Fast replacement for str2num and str2double; converts simple scalar input string(s) to number(s)
86.0 次下载
更新时间 2022/2/5

查看许可证

str2number - Fast replacement for str2num and str2double; convert input string(s) to number(s)
result = str2number(str) % a single char/string input value
results = str2number(cellStrs) % cell-array of input char/string values
str2number converts char/string input value(s) to their numeric value(s).
This function can be much faster than str2num/str2double/sscanf for the common cases of simple numeric values. However, str2number cannot handle complex/imaginary values, exponents, and non-scalar values (as opposed to cell-arrays of scalar values, that are accepted). If you expect such non-supported values as inputs, then use str2num/str2double instead.
The input str argument can be a char array ('12.3'), or a string ("12.3"), or a cell array of chars/strings. The period ('.') is the expected decimal point.
The conversion result is a numeric value in case the input(s) can be converted into a numeric value. If an input cannot be converted into a number, then the original string is returned, like the builtin str2num function, and unlike the builtin str2double function (which returns NaN for unconvertable input values).
IMPORTANT: str2number was optimized for best performance, and often works faster than str2num/str2double/sscanf, but it only works for scalar non-complex, non-exponent values! See limitations below for details.
Limitations and differences compared to str2num/str2double:
- Inputs with a decimal sign different than a period ('.') are not converted
- Inputs with a thousands seperators (, or ' or .) are not converted
- Exponents (e.g. '1.2e3') are not converted
- Complex/imaginary values (e.g. '1+2i') are not converted
- Non-scalar values (e.g. '1,2' or '12 13') are not converted (but a cell-array of scalar values is acceptable)
- The original input string is returned if it cannot be converted into a number, unlike str2double (which returns NaN)
- Cell-arrays of chars and strings are accepted, unlike str2num
- String arrays are not accepted ; use str2double or convert to cell array
Usage examples:
str2number('12.34') % => [12.34] % scalar input value (char array)
str2number("12.34") % => [12.34] % scalar input value (string)
str2number('12,34') % => '12,34' % comma is not supported
str2number("1'234") % => "12'34" % thousands seperator is not supported
str2number('1.2e3') % => '1.2e3' % exponents are not supported
str2number('12+3i') % => '12+3i' % complex values are not supported
str2number('12 34') % => '12 34' % non-scalars are not supported
str2number({'12','34'}) % => {12,34} % cell-array of input values
str2number({'12','34','ab'}) % => {12,34,'ab'} % cell-array of input values
Bugs and suggestions:
Please send to Yair Altman (altmany at gmail dot com)
See also:
str2num, str2double, sscanf

引用格式

Yair Altman (2024). str2number - Fast replacement for str2num and str2double (https://www.mathworks.com/matlabcentral/fileexchange/106265-str2number-fast-replacement-for-str2num-and-str2double), MATLAB Central File Exchange. 检索来源 .

MATLAB 版本兼容性
创建方式 R2021b
兼容任何版本
平台兼容性
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
版本 已发布 发行说明
1.0.0