Чтобы сохранить текст как вектор символов, заключайте его в одинарные кавычки. Обычно вектор символов имеет текст, который вы считаете единым фрагментом информации, таким как имя файла или метка для графика. Если у вас есть много фрагментов текста, таких как список имен файлов, то можно хранить их в массиве ячеек. Массив ячеек, все элементы которого являются векторами символов, является массивом ячеек из векторов символов.
Примечание
Начиная с 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"
cellstr
| char
| iscellstr
| strcmp
| string