Массивы ячеек из символьных векторов

Чтобы сохранить текст как вектор символов, заключайте его в одинарные кавычки. Обычно вектор символов имеет текст, который вы считаете единым фрагментом информации, таким как имя файла или метка для графика. Если у вас есть много фрагментов текста, таких как список имен файлов, то можно хранить их в массиве ячеек. Массив ячеек, все элементы которого являются векторами символов, является массивом ячеек из векторов символов.

Примечание

  • Начиная с R2018b, рекомендуемый способ хранения текста - это использование строковых массивов. Если вы создаете переменные, которые string тип данных, храните их в строковых массивах, а не в массивах ячеек. Для получения дополнительной информации смотрите Текст в Строке и Символьных массивах и Обновить код, чтобы Принять строки.

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

Создайте массив ячеек из символьных векторов

Чтобы создать массив ячеек из векторов символов, используйте фигурные скобки, {}, так же как вы должны создать любой массив ячеек. Например, используйте массив ячеек из векторов символов, чтобы хранить список имен.

C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell
    {'Li'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

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

L = strlength(C)
L = 1×5

     2     7     5     4     6

Доступ к векторам символов в массиве ячеек

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

C = {'Li','Sanchez','Jones','Yang','Larson'};
chr = C{1}
chr = 
'Li'

Назначьте другой вектор символов первой камере.

C{1} = 'Yang'
C = 1x5 cell
    {'Yang'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

Для обращения к подмножеству камер вместо их содержимого индексируйте с помощью сглаженных круглых скобок.

C(1:3)
ans = 1x3 cell
    {'Yang'}    {'Sanchez'}    {'Jones'}

В то время как вы можете получить доступ к содержимому камер путем индексации, большинство функций, которые принимают массивы ячеек в качестве входов, работают со всем массивом ячеек. Для примера можно использовать strcmp функция для сравнения содержимого C в вектор символов. strcmp возвращает 1 где есть матч и 0 в противном случае.

TF = strcmp(C,'Yang')
TF = 1x5 logical array

   1   0   0   1   0

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

num = sum(TF)
num = 2

Использование TF как логические индексы для возврата совпадений в C. Если вы индексируете с помощью сглаженных круглых скобок, то выходом является массив ячеек, содержащий только совпадения.

M = C(TF)
M = 1x2 cell
    {'Yang'}    {'Yang'}

Преобразование массивов ячеек в Строковые массивы

Как и R2018b, массивы строк поддерживаются во всех продуктах MATLAB ® и MathWorks ®. Поэтому рекомендуется использовать строковые массивы вместо массивов ячеек векторов символов. (Однако функции MATLAB, которые принимают массивы строк в качестве входов, действительно принимают векторы символов и массивы ячеек символьных векторов.)

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

C = {'Li','Sanchez','Jones','Yang','Larson'}
C = 1x5 cell
    {'Li'}    {'Sanchez'}    {'Jones'}    {'Yang'}    {'Larson'}

str = string(C)
str = 1x5 string
    "Li"    "Sanchez"    "Jones"    "Yang"    "Larson"

Фактически, string функция преобразует любой массив ячеек, пока все содержимое может быть преобразовано в строки.

C2 = {5, 10, 'some text', datetime('today')}
C2=1×4 cell array
    {[5]}    {[10]}    {'some text'}    {[23-Mar-2021]}

str2 = string(C2)
str2 = 1x4 string
    "5"    "10"    "some text"    "23-Mar-2021"

См. также

| | | |

Похожие темы