p{1} = [1 2]
p{2} = [1 2]
p{3} = [3 4 5]
p{4} = [3 4 5]
p{5} = [1 3 4 5]
p{6} = [1 3 4 5]
这样的数据,可能会有很多,如何删除其中的重复项,不用循环判断,如何能高效完成
可用换一些方法转化为字符串,例如用sprintf:
[~,k] = unique(cellfun(@(x)sprintf(’%.20g ',numel(x),size(x),x),p,‘un’,0));
c = p(k);
或者更快的序列化:
[~,k] = unique(cellfun(@char,cellfun(@getByteStreamFromArray,p,‘un’,0),‘un’,0));
c = p(k);
另外在新版本中containers.Map的性能也不错,对于大规模的数据结合序列化可以比上边两种方法都快:
c = cellfun(@getArrayFromByteStream,…
cellfun(@uint8,…
containers.Map(…
cellfun(@char,…
cellfun(@getByteStreamFromArray,p,‘un’,0),…
‘un’,0),zeros(size§)).keys,‘un’,0),‘un’,0);