Composing arrayfun syntax to extract data from structure
4 次查看(过去 30 天)
显示 更早的评论
Here is a simplified example of structure:
C(1,1).idx = [1;1;2;3];
C(2,1).idx = [1;1;2];
C(1,1).s = {'a';'a';'ab';'abc'};
C(2,1).s = {'a';'a';'ab'};
now, find unique idx in structure C:
[ua,ia,~] = arrayfun(@(x) unique(x.idx, 'rows'), C, 'UniformOutput', false);
How do I apply indexes ia to extract corresponding values in s fields? I can think of for loop but is there some arrayfun trick? Side note, in my real data idx is nx4 matrix therefore 'rows' argument.
采纳的回答
Matt Fig
2012-11-13
编辑:Matt Fig
2012-11-13
O.k., if you are just messing around with ARRAYFUN.
C(1,1).idx = [1;1;2;3];
C(2,1).idx = [1;1;2];
C(1,1).s = {'a';'a';'ab';'abc'};
C(2,1).s = {'a';'a';'ab'};
[ua,ia,~] = arrayfun(@(x) unique(x.idx,'rows'),C,'Un',0);
V = arrayfun(@(x) C(x).s(ia{x}),1:length(C),'Un',0)
0 个评论
更多回答(1 个)
Walter Roberson
2012-11-13
arrayfun(@(rowidx,idx) C(rowidx).s(idx{1}), 1:size(C,1), ia, 'UniformOutput', false)
or perhaps this might work:
arrayfun( @(idx, s) s{idx{1}}, ia, {C.s}, 'UniformOutput', false)
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!