Sync cell arrays using unique
1 次查看(过去 30 天)
显示 更早的评论
I have two cells GUD and GUDID, GUD is containing a 1x1000 double and GUDID contains a cell for every element in GUD.
I am calculating on GUD here. GUDID contains one ID number for every element in GUD
GUD={[2.56 3.23 1.22....]}
GUDID={173 178 180....}
for lol = 1:numel(GUD)
GUD{lol}=unique(GUD{1,lol});
%GUDID{lol}=...?
end
1 个评论
Rik
2021-4-20
It is not clear to me what you question is or what you want to do.
One tiny speedup: as long as you avoid some classes (strings, tables, timetables, and more), you can use the legacy syntax:
idx = ~cellfun('isempty',GUD{lol});
回答(1 个)
Chetan
2024-2-28
I understand you need to synchronize your `GUDID` cell array with the unique values obtained from the `GUD` cell array.
To achieve this, you can utilize the index output from the `unique` function to subset the corresponding IDs.
Here's the modified loop with some mock data:
% Mock data
GUD = {[2.56, 3.23, 1.22, 2.56, 3.23], [1.11, 1.22, 1.11]};
GUDID = {[173, 178, 180, 173, 178], [190, 180, 190]};
% Process to get unique values and corresponding IDs
for lol = 1:numel(GUD)
[GUD{lol}, ia] = unique(GUD{1,lol}, 'stable'); % 'stable' keeps original order
GUDID{lol} = GUDID{lol}(ia); % Subset the IDs based on unique value indices
end
GUD
GUDID
By using `ia`, you ensure `GUDID` reflects the changes in `GUD`.
For more information on the `unique` function and indexing refer to following MathWorks Documentation:
- https://www.mathworks.com/help/matlab/ref/unique.html
- https://www.mathworks.com/help/matlab/cell-arrays.html
Thanks
Chetan
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Chebyshev 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!