MATLAB: Create a struct based on user id

datastructuser

Hi! I have a set of location records called LocationRecords = [usersID, years month, day, hour, minuts, seconds, latitude, longitude, regionID], attached. I want to create a struct of data in which I can put the date associated to every user id. E.g If I have
LocationRecords=[14 2009 3 17 16 14 2 0.528229037988558 -1.70585947774536 9247;14 2009 3 17 2 33 10 0.528288412470045 -1.70598280759199 9465;14 2009 3 17 2 32 24 0.528288412470045 -1.70598280759199 9313;62 2009 3 15 19 17 34 0.528256895934005 -1.70598404814585 9223;89 2009 3 15 17 41 20 0.528261141300802 -1.70596368432656 9250]
I will obtain a struct 1×3 in which put the data associated to user with id=14, id=62 and id=89, can you help me?

Best Answer

[a,~,b] = unique(LocationRecords(:,1));
x = cellfun(@(x)sprintf('id_%d',x),num2cell(a),'un',0);
y = accumarray(b,(1:numel(b))',[],@(x){LocationRecords(x,2:end)});
C = cell2struct(y,x,1);