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."

 채택된 답변

Bruno Luong
Bruno Luong 2018년 10월 25일
편집: Bruno Luong 2018년 10월 25일
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

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.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

릴리스

R2018b

질문:

2018년 10월 25일

댓글:

2018년 10월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by