structfun

Aplica uma função a cada campo de um struct escalar.

Categoria: Language Fundamentals > Data Types

Sintaxe

A = structfun(func, S)

Chama func sobre o valor de cada campo e reúne os resultados em um vetor coluna.

B = structfun(func, S, 'UniformOutput', false)

Retorna um struct com os mesmos nomes de campos contendo os resultados.

Descrição

structfun é o equivalente de cellfun e arrayfun para structs. É útil para resumos sobre um conjunto de valores nomeados, como structfun(@numel, s) para o tamanho de cada campo.

Quando a função retorna resultados não escalares (strings, vetores), defina 'UniformOutput' como false; caso contrário ocorre um erro.

Argumentos de entrada

func
Handle de função que recebe o valor de um campo.
S
Struct escalar.
'UniformOutput'
true (padrão) exige que cada resultado seja escalar; false permite qualquer resultado e retorna um struct.

Argumentos de saída

A
Vetor coluna com um elemento por campo, na ordem dos campos.

Exemplo

Resultado em coluna e em struct

s.a = 1; s.b = 4; s.c = 9;
structfun(@sqrt, s)
r = structfun(@(v) v*2, s, 'UniformOutput', false)
Saída
ans = 3×1

     1
     2
     3
r = struct with fields:

    a: 2
    b: 8
    c: 18

Veja também

cellfun arrayfun fieldnames struct