exponenta event banner

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