indexing a field in a structure

1 view (last 30 days)
matthias daeumer
matthias daeumer on 9 Oct 2020
Edited: Stephen23 on 9 Oct 2020
I need to save every mean from this structure into a vector. (there are 270 fields)
m_vector(1:270) = s(11).structure.mean(1:270) does not work and I am not sure why
  2 Comments
matthias daeumer
matthias daeumer on 9 Oct 2020
This is the error:
>> m_vector(1:270) = s(vv).structure.Mean(1:270)
Expected one output from a curly brace or dot indexing expression, but there were 270 results.
Stephen23
Stephen23 on 9 Oct 2020
Edited: Stephen23 on 9 Oct 2020
"I need to save every mean from this structure into a vector. (there are 270 fields)"
I very much doubt that there are 270 fields. Most likely you are confusing the number of fields (displayed as headers in the Variable Viewer) with the number of elements in the structure (displayed as rows). In fact these are totally independent things.
But until you actually upload the data in a mat file by clicking on the paperclip button, we will have to rely on guessing.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 9 Oct 2020
Edited: Stephen23 on 9 Oct 2020
Your indexing is not correct. If s(11).structure has exactly 270 elements, then all you need is this:
out = [s(11).structure.Mean]
Read more on how to use comma-separated lists:
For an explanation of why your indexing is not correct:

More Answers (1)

Ameer Hamza
Ameer Hamza on 9 Oct 2020
Edited: Ameer Hamza on 9 Oct 2020
Try this
all_means = cell2mat(arrayfun(@(i) {[s(i).structure.mean]}, 1:numel(s)))
% or
all_means = cell2mat(arrayfun(@(s_) {[s_.structure.mean]}, s))

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!