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

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

Примечание

  • С 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 строковые массивы поддерживаются в продуктах MathWorks® и MATLAB®. Поэтому рекомендуется, чтобы вы использовали строковые массивы вместо массивов ячеек из символьных векторов. (Однако функции 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"

Смотрите также

| | | |

Похожие темы