Indexing structure array. Every first entry of an vector.

Hello, I have stored a lot of vectors in the fields of an structure array and i want to get every first element. s is an 1xN struct. field1 contains the vector
a = s(1:end).field1(1)
or
a = s.field1(1)
give the same error "Expected one output from a curly brace or dot indexing expression, but there were N results."

 Accepted Answer

If speed is matters, use for-loop
s = struct('field1',num2cell(rand(1,100000)));
tic
a = arrayfun(@(S) S.field1(1), s);
toc % Elapsed time is 0.598622 seconds.
tic
a = zeros(size(s));
for k=1:length(a)
a(k) = s(k).field1(1);
end
toc % Elapsed time is 0.051761 seconds.

2 Comments

Thanks for the fast response :), seems like you can't always get around the for loop.
You can use hidden for loops such as arrayfun or cellfun, but there is no built-in operation for this situation.

Sign in to comment.

Products

Release

R2018b

Community Treasure Hunt

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

Start Hunting!