This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Convert character array to numeric array


x = str2num(str)
[x, status] = str2num('str')


    Note   str2num uses the eval function to convert the input argument. Side effects can occur if the string contains calls to functions. Using str2double can avoid some of these side effects.

x = str2num(str) converts str, a character representation of a numeric value, to a numeric representation. str2num also converts character arrays to numeric arrays. If the input argument does not represent a valid number or matrix, str2num(str) returns the empty matrix in x.

Text that represents a number can contain one or more numbers separated by spaces, commas, or semicolons, such as '5', '10,11,12', or '5,10;15,20'. In addition to numeric values and delimiters, input text can also include a decimal point, leading + or - signs, the letter e or d preceding a power of 10 scale factor, the letter i or j indicating a complex or imaginary number, or true or false indicating logical values.

The following table shows several examples of valid inputs to str2num:

String InputNumeric OutputOutput Class
'500 250 125 67'500 250 125 671-by-4 row vector of double
'500; 250; 125; 62.5'500.0000
4-by-1 column vector of double
'1 23 6 21; 53:56'  1 23   6 21
53 54 55 56
2-by-4 matrix of double
'12e-3 5.9e-3'0.0120 0.00591-by-2 row vector of double
'uint16(500)'50016–bit unsigned integer
'false true'0 11-by-2 row vector of logical

    Note:   str2num does not operate on string arrays or cell arrays. To convert a string array or a cell array of character vectors to numeric values, use str2double.

If the input text does not represent a valid number or matrix, str2num(str) returns the empty matrix in x.

[x, status] = str2num('str') returns the status of the conversion in logical status, where status equals logical 1 (true) if the conversion succeeds, and logical 0 (false) otherwise.

Space characters can be significant. For instance, str2num('1+2i') and str2num('1 + 2i') produce x = 1+2i, while str2num('1 +2i') produces x = [1 2i]. You can avoid these problems by using the str2double function.


Input a character vector that represent a single number. The output is a scalar double:

A = str2num('500')

A =



ans =


Repeat this operation, but this time using an unsigned 16–bit integer:

A = str2num('uint16(500)')

A =



ans =


Try three different ways of specifying a row vector. Each returns the same answer:

str2num('2 4 6 8')              % Separate with spaces.

ans =

     2     4     6     8

str2num('2,4,6,8')              % Separate with commas.

ans =

     2     4     6     8

str2num('[2 4 6 8]')            % Enclose in brackets.

ans =

     2     4     6     8

Note that the first two of these commands do not need the MATLAB® square bracket operator to create a matrix. The str2num function inserts the brackets for you if they are needed.

Use a column vector this time:

str2num('2; 4; 6; 8')
ans =

And now a 2-by-2 matrix:

str2num('2 4; 6 8')
ans =
     2     4
     6     8

Introduced before R2006a

Was this topic helpful?