getfield to get values from an entire struct array?

37 visualizaciones (últimos 30 días)
Ken
Ken el 29 de Mzo. de 2024
Comentada: Ken el 30 de Mzo. de 2024
I have an array of objects of type Peak. Given the name of a field (I will be using several in turn), I would like to get the value of that field for every object in the array, resulting in a vector of double. Is there any way to ask getfield to do that, without resorting to a for loop? Or is there some related function that would do the job for me?

Respuesta aceptada

Bruno Luong
Bruno Luong el 29 de Mzo. de 2024
Create 1 x 3 struct array with field named 'afield'
s = struct('afield', {11 12 13})
s = 1x3 struct array with fields:
afield
s(1)
ans = struct with fields:
afield: 11
s(2)
ans = struct with fields:
afield: 12
s(3)
ans = struct with fields:
afield: 13
% Here is the command that might be usefule for you
A = cat(2, s.afield)
A = 1x3
11 12 13
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  3 comentarios
Bruno Luong
Bruno Luong el 29 de Mzo. de 2024
Editada: Bruno Luong el 29 de Mzo. de 2024
Take a look at dynamic fieldname
s = struct('afield', {11 12 13});
fieldname = "afield"
fieldname = "afield"
A = cat(2, s.(fieldname))
A = 1×3
11 12 13
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Ken
Ken el 30 de Mzo. de 2024
Well I'll be! That is some WEIRD syntax! But it fits my need perfectly. Thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Structures en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by