str2num

Преобразуйте символьный массив или строку к числовому массиву

Описание

пример

X = str2num(chr) преобразует символьный массив или строковый скаляр к числовой матрице. Вход может включать пробелы, запятые и точки с запятой, чтобы указать на отдельные элементы. Если str2num не может проанализировать вход как числовые значения, затем он возвращает пустую матрицу.

str2num функция не преобразует массивы ячеек или нескалярные строковые массивы, и чувствительна к разрядке вокруг + и - операторы.

Примечание

Факторы безопасности: str2num реализован с помощью eval функция, которая оценивает входной параметр. При вызове str2num с недоверяемым вводом данных пользователем подтвердите вход, чтобы избежать неожиданного выполнения кода. Примерами недоверяемого ввода данных пользователем являются данные, прибывающие от пользователя, которого вы не можете знать, или из источника вы не имеете никакого контроля. Если необходимо обратиться к этому беспокойству, рассмотрите эти подходы:

  • Подтвердите входные параметры к str2num. Во-первых, ищите позволенные операции, такие как использование (), /, *, +, -, и ., и буквы e и i. Затем если вы находите другие операции, запрещаете выполнение.

  • Замена str2num с функцией такой как str2double.

Непреднамеренные Побочные эффекты: Кроме того, могут быть другие непреднамеренные побочные эффекты, когда вход включает имя функции. Чтобы избежать этих проблем, использовать str2double.

пример

[X,tf] = str2num(chr) дополнительно возвращает второй выходной аргумент, который является 1 TRUE) если str2num успешно преобразует chr. В противном случае, str2num возвращает 0 ложь).

Примеры

свернуть все

Преобразуйте векторы символов, которые представляют числа.

X = str2num('100')
X = 100
X = str2num('100 200 300 400')
X = 1×4

   100   200   300   400

str2num интерпретирует экспоненциальное представление.

X = str2num('12e-3 5.9e-3 -8.1e-3 2.56e-3; 5 11.2 17.9 33')
X = 2×4

    0.0120    0.0059   -0.0081    0.0026
    5.0000   11.2000   17.9000   33.0000

Преобразуйте вектор символов в 16-битное целое число без знака с помощью str2num и uint16.

X = str2num('256');
X = uint16(X)
X = uint16
    256

Преобразуйте вектор символов, содержащий true и false к логическому массиву.

X = str2num('false true true false')
X = 1x4 logical array

   0   1   1   0

Возвратите состояние преобразования, которое перестало работать. tf 0, и X пустая матрица.

[X,tf] = str2num('12e-3 m/s, 5.9e-3 m/s')
X =

     []
tf = logical
   0

Если вы удаляете дополнительный текст (m/s), затем преобразование успешно выполняется.

[X,tf] = str2num('12e-3 5.9e-3')
X = 1×2

    0.0120    0.0059

tf = logical
   1

Входные параметры

свернуть все

Представление числовой матрицы в виде символьного массива или строкового скаляра.

Текст, который представляет числовую матрицу, может содержать пробелы, запятые или точки с запятой, такие как '5', '10,11,12', или '5,10;15,20'. В дополнение к числовым значениям и разделителям, входной текст также может включать любой из следующих элементов:

  • Десятичная точка

  • Продвижение + или - знаки

  • Буква e или d предшествование степени 10 масштабных коэффициентов

  • Буква i или j указание на комплексное или мнимое число

  • true или false указание на логические значения

Пробелы или отсутствие их, могут быть значительными. Например, str2num('1+2i') и str2num('1 + 2i') оба возвращают комплексное число 1.0000 + 2.0000i, в то время как str2num('1 +2i') возвращает вектор 1 на 2 [1.0000 + 0.0000i 0.0000 + 2.0000i]. Чтобы избежать этой проблемы, используйте str2double функция.

str2num преобразует символьные массивы и строковые скаляры только. Чтобы преобразовать нескалярные строковые массивы или массивы ячеек к числовым массивам, используйте str2double функция.

Выходные аргументы

свернуть все

Выходной массив, возвращенный как числовая матрица.

Истинный или ложный результат, возвращенный как 1 или 0 из типа данных logical.

Представлено до R2006a