omit same element inside cell
3 次查看(过去 30 天)
显示 更早的评论
A={[1,2,3,4],[4,2,3],[1,2,5,6,78,9],[1,2,3,4],[1,2,5,6,78,9],[4,2,3],[5,6,7]};
c=cellfun(@(x) unique(x),A,'UniformOutput',false);
I want to omit same array inside cell
result should be
A={[1,2,3,4],[4,2,3],[1,2,5,6,78,9],[5,6,7]};
2 个评论
madhan ravi
2019-4-3
?? [4,2,3] & [5,6,7] have the same size there is something wrong in your logic or your explanation
采纳的回答
Stephen23
2019-4-3
编辑:Stephen23
2019-4-3
>> A = {[1,2,3,4],[4,2,3],[1,2,5,6,78,9],[1,2,3,4],[1,2,5,6,78,9],[4,2,3],[5,6,7]};
>> N = numel(A);
>> X = false(N,N); % find which arrays are the same:
>> for ii=1:N, for jj=1:ii, X(ii,jj)=isequal(A{ii},A{jj}); end, end
>> Y = X & cumsum(X,1)==1 & cumsum(X,2)==1; % indices that ignore duplicates.
>> Z = A(any(Y,1));
>> Z{:}
ans =
1 2 3 4
ans =
4 2 3
ans =
1 2 5 6 78 9
ans =
5 6 7
0 个评论
更多回答(1 个)
Jos (10584)
2019-4-3
You can convert the elements of each cell to a char array and apply unique on that cell array of chars.
A = {[1,2,3,4],[4,2,3],[1,2,5,6,78,9],[1,2,3,4],[1,2,5,6,78,9],[4,2,3],[5,6,7]};
% engine
[~,ix] = unique(cellfun(@(x) num2str(x), A ,'un', 0), 'stable') ;
B = A(ix) % as requested
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!