How can i access field values of a struct by indexing?
조회 수: 11 (최근 30일)
이전 댓글 표시
My struct has several fields containing a matrix. How can I get the first 100 values of each field without using a for loop.
a = b.(fieldnames(b))(1:100,:); % wont work
댓글 수: 1
채택된 답변
Walter Roberson
2017년 11월 6일
a = structfun(@(F) F(1:100,:), b, 'uniform', 0)
댓글 수: 4
Rik
2021년 1월 26일
That is true in general. The best you can hope for is parity (given proper pre-allocation). Every function that hides a loop (cellfun, arrayfun, etc) will have an overhead. Matlab is getting better and better at for-loops.
The only exception to this rule is if you have actual array operations:
%slow:
s=0;for n=1:numel(data),s=s+data(n);end
%fast
s=sum(data);
Walter Roberson
2021년 1월 26일
Anonymous functions are more expensive than plain function handles such as @sin
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!