cellfun

Aplica uma função ao conteúdo de cada célula de um cell array.

Categoria: Language Fundamentals > Data Types

Sintaxe

A = cellfun(func, C)

Chama func em cada célula e reúne os resultados escalares em um array.

A = cellfun(func, C1, C2, ...)

Passa o conteúdo de células correspondentes de vários arrays para func.

[A, B, ...] = cellfun(___)

Reúne várias saídas de func.

B = cellfun(___, 'UniformOutput', false)

Retorna um cell array, permitindo resultados de qualquer tamanho ou classe.

Descrição

cellfun é o equivalente, para cell arrays, de um laço sobre C{k}. Com saída uniforme os escalares são reunidos num array numérico, lógico ou char; se algum resultado não for escalar, ocorre um erro orientando a definir 'UniformOutput' como false.

É usado tipicamente com função anônima, como em cellfun(@(s) numel(s), nomes) para obter o comprimento de cada nome.

Argumentos de entrada

func
Function handle, ou um nome legado como 'isempty', 'length' ou 'numel'.
C
Cell array. Vários cell arrays devem ter o mesmo tamanho.
'UniformOutput'
Lógico. Com true (padrão) cada resultado deve ser escalar; com false os resultados são guardados em células.

Argumentos de saída

A
Array com o tamanho de C (saída uniforme) ou cell array desse tamanho.

Exemplo

Contando e transformando

names = {'ab','c',''};
cellfun(@numel, names)
cellfun(@(x) upper(x), {'a','b'}, 'UniformOutput', false)
[mx, ix] = cellfun(@max, {[1 5 2], [7 3]})
Saída
ans = 1×3

     2     1     0
ans = 1×2 cell

    {'A'}    {'B'}
mx = 1×2

     5     7
ix = 1×2

     2     1

Veja também

arrayfun cell2mat structfun cell isempty