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; comfalseos 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