vector to struct without loop
이전 댓글 표시
I have two vectors, one with ids and another with information for each id. For each id, the vector with information has, potentially, a different number of entries. I want to assign this to a struct, ideally without using a loop as the information vector/struct is used within an optimization routine and it changes every time there is a new iteration.
This is the example:
id=[1 1 1 2 2 3]';
info = [0.5 1 10 1 0.3 -200]';
In this case, id 1 has three elements in the information vector, id 2 has two, and id 3 has one. With the loop, I would do
for i = 1:max(id),
m(i).info = info(id==i);
end
Is there anyway to do this without using the loop?
Thanks
채택된 답변
추가 답변 (2개)
Matt J
2017년 1월 1일
I'm not sure there's a fast way without loops, but here's a way that at least doesn't use any Mcoded for-loops as far as I know
n=max(id);
data=accumarray(id,info,[],@(x){x});
[m(1:n).info]=deal(data{:});
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!