Spec-Zone.ru › Octave 5

6.3.3 Индексирование ячеек массивов

Как показано в разделе Базовое использование ячеек массивов, элементы могут быть извлечены из ячеек массивов с использованием операторов ‘{’ и ‘}’. Если вы хотите извлечь или получить доступ к подмассивам, которые все еще являются ячейками массивов, вам необходимо использовать операторы ‘(’ и ‘)’. Следующий пример иллюстрирует разницу:

c = {"1", "2", "3"; "x", "y", "z"; "4", "5", "6"};
c{2,3}
     ⇒ ans = z

c(2,3)
     ⇒ ans =
        {
          [1,1] = z
        }

Таким образом, с помощью ‘{}’ вы получаете доступ к элементам ячейки массива, а с помощью ‘()’ вы получаете доступ к подмассиву ячейки массива.

Использование операторов ‘(’ и ‘)’ работает для ячеек массивов, как и для многомерных массивов. Например, все строки первой и третьей колонки ячейки массива могут быть установлены в 0 с помощью следующей команды:

c(:, [1, 3]) = {0}
     ⇒ =
        {
          [1,1] = 0
          [2,1] = 0
          [3,1] = 0
          [1,2] = 2
          [2,2] = y
          [3,2] = 5
          [1,3] = 0
          [2,3] = 0
          [3,3] = 0
        }

Обратите внимание, что это также можно сделать следующим образом:

c(:, [1, 3]) = 0;

Здесь скаляр ‘0’ автоматически преобразуется в ячейку массива ‘{0}’ и затем присваивается подмассиву c.

Чтобы привести еще один пример индексирования ячеек массивов с помощью ‘()’, вы можете поменять первую и вторую строку ячейки массива, как в следующей команде:

c = {1, 2, 3; 4, 5, 6};
c([1, 2], :) = c([2, 1], :)
     ⇒ =
        {
          [1,1] =  4
          [2,1] =  1
          [1,2] =  5
          [2,2] =  2
          [1,3] =  6
          [2,3] =  3
        }

Обращение к нескольким элементам ячейки массива с помощью операторов ‘{’ и ‘}’ приведет к списку элементов, разделенному запятыми (см. Список, разделенный запятыми). Используя операторы ‘{’ и ‘}’, первые две строки в приведенном выше примере можно поменять местами следующим образом:

[c{[1,2], :}] = deal (c{[2, 1], :})
     ⇒ =
        {
          [1,1] =  1
          [2,1] =  4
          [1,2] =  2
          [2,2] =  5
          [1,3] =  3
          [2,3] =  6
        }

Как и в случае с массивами структур и числовыми массивами, пустая матрица ‘[]’ может быть использована для удаления элементов из ячейки массива:

x = {"1", "2"; "3", "4"};
x(1, :) = []
     ⇒ x =
        {
          [1,1] = 3
          [1,2] = 4
        }

Следующий пример показывает, как удалить содержимое элементов ячейки массива, но не удалять место для них:

x = {"1", "2"; "3", "4"};
x(1, :) = {[]}
⇒ x =
      {
        [1,1] = [](0x0)
        [2,1] = 3
        [1,2] = [](0x0)
        [2,2] = 4
      }

Операции индексирования применяются к ячейке массива, а не к объектам внутри ячейки массива. В отличие от этого, cellindexmat применяет индексирование матриц к объектам внутри каждого элемента ячейки массива и возвращает запрошенные значения.

y = cellindexmat (x, varargin)

Выполнить индексирование матриц в массиве ячеек.

При заданном массиве ячеек матриц x, эта функция вычисляет

Y = cell (size (X));
for i = 1:numel (X)
  Y{i} = X{i}(varargin{1}, varargin{2}, …, varargin{N});
endfor

Аргументы индексирования могут быть скалярами (2), массивами ([1, 3]), диапазонами (1:3) или оператором двоеточия (":"). Однако, ключевое слово индексирования end недоступно.

См. также: cellslices, cellfun.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Indexing-Cell-Arrays.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API