how to extract some data from this particular structure?

3 views (last 30 days)
Hello,
I have this structure, I am trying to extract some data (preferably avoiding loops):
sasa =
1×4 cell array
{1×1 struct} {1×1 struct} {1×1 struct} {1×1 struct}
K>> sasa{1}
ans =
struct with fields:
fmt: '%05.2f'
name: 'MOVE_ALONG_AXIS'
flag: 1
prjv: 1
vals: [-20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
type: 'real'
unit: 'mm'
ref: 1
X0: [2×1 double]
LB: -20
UB: 20
magn: 0
K>> sasa{1}
sasa{2}
ans =
struct with fields:
fmt: '%05.2f'
name: 'wn'
flag: 1
prjv: 1
vals: [1×181 double]
type: 'real'
unit: 'mm'
ref: 2
X0: [2×1 double]
LB: 0.2000
UB: 2
magn: 0.5000
sasa{3}
ans =
struct with fields:
fmt: '%05.2f'
name: 'hn'
flag: 1
prjv: 1
vals: [1×991 double]
type: 'real'
unit: 'mm'
ref: 3
X0: [2×1 double]
LB: 0.1000
UB: 10
magn: 0.5000
sasa{4}
ans =
struct with fields:
fmt: '%05.2f'
name: 'pn'
flag: 1
prjv: 1
vals: [1×131 double]
type: 'real'
unit: 'mm'
ref: 4
X0: [2×1 double]
LB: 2
UB: 15
magn: 10
I would like to extarct just the names (preferably without loops), i.e. get a vector like this
M=['MOVE_ALONG_AXIS' 'wn' 'hn' 'pn']
tried a few things such as
sasa{:}.name
sasa{1:4}.name
it didn't work
Any ideas?
Thank you
  1 Comment
Stephen23
Stephen23 on 9 Aug 2022
Note that in MATLAB the square brackets are a concatenation operator (not a "list" operator, which MATLAB does not have), so your desired output
M=['MOVE_ALONG_AXIS' 'wn' 'hn' 'pn']
is exactly equivalent to this
M = 'MOVE_ALONG_AXISwnhnpn'

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 9 Aug 2022
Edited: Stephen23 on 9 Aug 2022
"Any ideas?"
Two comma-separated lists will do it. For example, where C is your cell array:
S = [C{:}]; % create non-scalar structure
N = [S.name] % then your task is this easy
Note that rather than storing lots of scalar structures in a cell array, your task would be easier if you used one non-scalar structure array right from the start. Better data deisgn makes your code simpler and more efficient.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by