Разное

Cell matlab: Convert array to cell array with consistently sized cells

Доступ к данным в массиве ячеек — MATLAB & Simulink

Основное содержимое

Open Live Script

В этом примере показано, как читать и записывать данные в массив ячеек и из него.

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

 C = {'один', 'два', 'три';
     1, 2, 3} 
 C=  Массив ячеек 2×3 
    {'один два три'}
    {[ 1]} {[ 2]} {[ 3]}
 

Существует два способа обращения к элементам массива ячеек. Заключите индексы в гладкие круглые скобки, () для ссылки на наборы ячеек — например, для определения подмножества массива. Заключите индексы в фигурные скобки, {} , чтобы ссылаться на текст, числа или другие данные в отдельных ячейках.

Индексирование ячеек с помощью гладких скобок, ()

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

 верхний левый = C(1:2,1:2) 
 верхний левый =  Массив ячеек 2×2 
    {'один два'}
    {[ 1]} {[ 2]}
 

Обновить наборы ячеек, заменив их таким же количеством ячеек. Например, замените ячейки в первой строке C массивом ячеек эквивалентного размера (1 на 3).

 C(1,1:3) = {'первый','второй','третий'} 
 C=  Массив ячеек 2×3 
    {'первый второй третий'}
    {[ 1]} {[ 2]} {[ 3]}
 

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

 numericCells = C(2,1:3) 
 numericCells=  Массив ячеек 1×3 
    {[1]} {[2]} {[3]}
 
 numericVector = cell2mat(numericCells) 
 numericVector =  1×3 
     1 2 3
 

numericCells — это массив ячеек 1 на 3, а numericVector — это массив 1 на 3 типа double .

Индексирование содержимого с помощью фигурных скобок, {}

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

 последняя = C{2,3} 
 последняя = 3
 

last — это числовая переменная типа double , поскольку ячейка содержит значение double .

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

 C{2,3} = 300 
 C=  Массив ячеек 2×3 
    {'первый второй третий'}
    {[ 1]} {[ 2]} {[ 300]}
 

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

Назначить содержимое четырех ячеек C четырем переменным.

 [r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2} 
 r1c1 =
'первый'
 
 r2c1 = 1
 
 r1c2 =
'второй'
 
 r2c2 = 2
 

Если каждая ячейка содержит данные одного типа, вы можете создать одну переменную, применив оператор объединения массивов [] к списку, разделенному запятыми.

Объединить содержимое второй строки в числовой массив.

 чисел = [C{2,:}] 
 чисел =  1×3 
     1 2 300
 

См. также

ячейка | Cell2mat

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

  • Создание массива ячеек
  • Многоуровневое индексирование для доступа к частям ячеек
  • Списки, разделенные запятыми

У вас есть модифицированная версия этого примера. Хотите открыть этот пример со своими правками?

Вы щелкнули ссылку, соответствующую этой команде MATLAB:

Запустите команду, введя ее в командном окне MATLAB. Веб-браузеры не поддерживают команды MATLAB.

Выберите веб-сайт, чтобы получить переведенный контент, где он доступен, и ознакомиться с местными событиями и предложениями. В зависимости от вашего местоположения мы рекомендуем вам выбрать: .

Вы также можете выбрать веб-сайт из следующего списка:

Европа

Свяжитесь с местным офисом

массивов ячеек символьных векторов — MATLAB & Simulink

Массивы ячеек векторов символов

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

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

Открыть Live Script

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

 C = {'Ли','Санчес','Джонс','Ян','Ларсон'} 
 C =  1x5 ячейка 
    {'Ли'} {'Санчес'} {'Джонс'} {'Ян'} {'Ларсон'}
 

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

 L = длина длины(C) 
 L =  1×5 
     2 7 5 4 6
 

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

Open Live Script

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

 C = {'Ли','Санчес','Джонс','Ян','Ларсон'};
хр = C{1} 
 хр =
'Ли'
 

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

 C{1} = "Ян" 
 C =  1x5 ячейка 
    {'Ян'} {'Санчес'} {'Джонс'} {'Ян'} {'Ларсон'}
 

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

 C(1:3) 
 анс =  1x3 ячейка 
    {'Ян'} {'Санчес'} {'Джонс'}
 

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

 TF = strcmp(C,'Ян') 
 TF =  Логический массив 1x5 
   1 0 0 1 0
 

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

 число = сумма (TF) 
 число = 2
 

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

 M = C(TF) 
 M =  Ячейка 1x2 
    {'Ян'} {'Ян'}
 

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

Open Live Script

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

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

 C = {'Ли','Санчес','Джонс','Ян','Ларсон'} 
 C =  1x5 ячейка 
    {'Ли'} {'Санчес'} {'Джонс'} {'Ян'} {'Ларсон'}
 
 стр = струна (C) 
 стр =  1x5 струна 
    "Ли" "Санчес" "Джонс" "Ян" "Ларсон"
 

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

 C2 = {5, 10, 'какой-то текст', datetime('сегодня')} 
 C2=  Массив ячеек 1×4 
    {[5]} {[10]} {'какой-то текст'} {[26 ноября 2022 г.]}
 
 str2 = строка (C2) 
 str2 =  1x4 строка 
    "5" "10" "какой-то текст" "26-ноября-2022"
 

См. также

Cellstr | символ | iscellstr | стркмп | строка

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

  • Текст в строковых и символьных массивах
  • Доступ к данным в массиве ячеек
  • Создание массивов строк
  • Обновите свой код для приема строк
  • Часто задаваемые вопросы о массивах строк

У вас есть модифицированная версия этого примера. Хотите открыть этот пример со своими правками?

Вы щелкнули ссылку, соответствующую этой команде MATLAB:

Запустите команду, введя ее в командном окне MATLAB. Веб-браузеры не поддерживают команды MATLAB.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *