Find unique combinations of double and character elements
1 次查看(过去 30 天)
显示 更早的评论
I have a cell type variable with 3 columns and 500000 rows, here is an example:
c1 c2 c3
A={1994 'AACE' 2071
1994 'AACE' 30677
1994 'AAC' 1541
1994 'AAC' 2027
1994 'AAC' 7843}
I am applying the following code:
%Unique combinations of c1 and c2
[y,~,ind] = unique([num2str(c1) c2], 'rows'); %Problem
%Count occurences
c = accumarray(ind,1);
%Final variable
F = [y c];
But it gives me an error in the first row, because I am trying to find unique combinations of 'double' and 'char' elements. Can someone help me? Thanks
2 个评论
Yu Jiang
2014-8-10
Hi Maria
It would be easier to help you if you could show the exact error message.
-Yu
采纳的回答
Azzi Abdelmalek
2014-8-10
编辑:Azzi Abdelmalek
2014-8-10
A={1994 'AACE' 2071
1994 'AACE' 30677
1994 'AAC' 1541
1994 'AAC' 2027
1994 'AAC' 7843};
c12=cellfun(@(x,y) [num2str(x) y],A(:,1),A(:,2),'un',0);
[y,ii,ind] = unique(c12) %Problem
c = accumarray(ind,1);
F = [A(ii,:) num2cell(c)]
0 个评论
更多回答(2 个)
Andrei Bobrov
2014-8-10
[y0,~,ii] = unique(A(:,2));
[y,~,i0] = unique([cell2mat(A(:,1)),ii],'rows')
F = [num2cell(y(:,1)),y0,num2cell(accumarray(i0,1))];
Yu Jiang
2014-8-10
I believe both the answers by Andrei Bobrov and Azzi Abdelmalek are correct. The error message should be caused by your original definition of A. If you create A exactly as Azzi does, then there should be no problem.
By the way, they both use the function cellfun, which is very convenient for cell operations. More details can be found here (Documentation) .
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!