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 (false).

Примеры

свернуть все

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

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