exponenta event banner

Текст в строковых и символьных массивах

Существует два способа представления текста в MATLAB ®. Начиная с R2016b, текст можно хранить в строковых массивах. А в любой версии MATLAB текст можно хранить в символьных массивах. Типичным способом использования символьных массивов является хранение фрагментов текста в виде символьных векторов. MATLAB отображает строки с двойными кавычками и векторы символов с одиночными кавычками.

Представление текста со строковыми массивами

Вы можете хранить любой 1-by-n последовательность символов в виде строки, используя string тип данных. Начиная с R2017a, заключите текст в двойные кавычки, чтобы создать строку.

str = "Hello, world"
str = 
"Hello, world"

Хотя текст "Hello, world" имеет длину 12 символов, str сам по себе является строкой 1 на 1, или строковым скаляром. Можно использовать строковый скаляр для указания имени файла, метки печати или любой другой части текстовой информации.

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

n = strlength(str)
n = 12

Если текст включает двойные кавычки, используйте две двойные кавычки в определении.

str = "They said, ""Welcome!"" and waved."
str = 
"They said, "Welcome!" and waved."

Чтобы добавить текст в конец строки, используйте оператор «плюс», +. Если переменная может быть преобразована в строку, то plus преобразует его и добавляет.

fahrenheit = 71;
celsius = (fahrenheit-32)/1.8;
tempText = "temperature is " + celsius + "C"
tempText = 
"temperature is 21.6667C"

Начиная с R2019a, можно также объединять текст с помощью append функция.

tempText2 = append("Today's ",tempText)
tempText2 = 
"Today's temperature is 21.6667C"

string функция может преобразовывать различные типы входных данных, такие как числовые, datetime, duration и категориальные значения. Например, преобразовать выходные данные pi в строку.

ps = string(pi)
ps = 
"3.1416"

В строковом массиве можно хранить несколько фрагментов текста. Каждый элемент массива может содержать строку, имеющую разное количество символов, без заполнения.

str = ["Mercury","Gemini","Apollo";...
       "Skylab","Skylab B","ISS"]
str = 2x3 string
    "Mercury"    "Gemini"      "Apollo"
    "Skylab"     "Skylab B"    "ISS"   

str является строковым массивом 2 на 3. Длины строк можно найти с помощью strlength функция.

N = strlength(str)
N = 2×3

     7     6     6
     6     8     3

С R2018b года строковые массивы поддерживаются во всех продуктах MATLAB и MathWorks ®. Функции, которые принимают символьные массивы (и массивы ячеек символьных векторов) в качестве входных данных, также принимают строковые массивы.

Представление текста с помощью символьных векторов

Как сохранить 1-по-n последовательность символов в качестве символьного вектора, используя char тип данных, заключите его в одинарные кавычки.

chr = 'Hello, world'
chr = 
'Hello, world'

Текст 'Hello, world' имеет длину 12 символов и chr сохраняет его в виде символьного вектора 1 на 12.

whos chr
  Name      Size            Bytes  Class    Attributes

  chr       1x12               24  char               

Если текст включает одинарные кавычки, используйте две одинарные кавычки в определении.

chr = 'They said, ''Welcome!'' and waved.'
chr = 
'They said, 'Welcome!' and waved.'

Символьные векторы имеют два основных применения:

  • Задание отдельных фрагментов текста, например имен файлов и меток печати.

  • Для представления данных, закодированных с использованием символов. В таких случаях может потребоваться простой доступ к отдельным символам.

Например, последовательность ДНК можно хранить в виде символьного вектора.

seq = 'GCTAGAATCC';

Можно получить доступ к отдельным символам или подмножествам символов путем индексирования, точно так же, как индексирование в числовой массив.

seq(4:6)
ans = 
'AGA'

Конкатенация символьного вектора с квадратными скобками аналогично конкатенации массивов других типов.

seq2 = [seq 'ATTAGAAACC']
seq2 = 
'GCTAGAATCCATTAGAAACC'

Начиная с R2019a, можно также объединять текст с помощью append. append функция рекомендуется, поскольку она последовательно обрабатывает строковые массивы, символьные векторы и массивы ячеек символьных векторов.

seq2 = append(seq,'ATTAGAAACC')
seq2 = 
'GCTAGAATCCATTAGAAACC'

Функции MATLAB, которые принимают строковые массивы в качестве входных данных, также принимают символьные векторы и массивы ячеек символьных векторов.

См. также

| | | | | |

Связанные темы