Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从嵌套单元格数组中删除重复字符串_String_Matlab_Duplicates_Cell Array_Flatten - Fatal编程技术网

String 从嵌套单元格数组中删除重复字符串

String 从嵌套单元格数组中删除重复字符串,string,matlab,duplicates,cell-array,flatten,String,Matlab,Duplicates,Cell Array,Flatten,我有一个名为tmp的1x234单元数组,我想从中删除所有重复项。tmp的某些元素可以是: tmp{1, 3} -> 'Ro' tmp{1, 167}{1, 1} -> 'Ro' tmp{1, 167}{1, 2} -> 'CvF' 在前两个选项中,我只想保留tmp{1167}{1,1}->'Ro' 此外,我还想打开单元格中包含单元格的条目,例如: tmp{1, 167}{1, 1} -> 'Ro' tmp{1, 167}{1, 2} -> 'CvF' 进入: 我

我有一个名为
tmp
的1x234单元数组,我想从中删除所有重复项。
tmp
的某些元素可以是:

tmp{1, 3} -> 'Ro'
tmp{1, 167}{1, 1} -> 'Ro'
tmp{1, 167}{1, 2} -> 'CvF'
在前两个选项中,我只想保留
tmp{1167}{1,1}->'Ro'

此外,我还想打开单元格中包含单元格的条目,例如:

tmp{1, 167}{1, 1} -> 'Ro'
tmp{1, 167}{1, 2} -> 'CvF'
进入:


我怎样才能实现这两个目标;DR:
unq=unique([tmp{:}])


如果最大嵌套级别为2(即单元格中的单元格),则展平数组不需要任何类型的递归函数,可以使用简单的连接来实现。请参见下面的完整示例:

函数unq=q66221704() %%生成一些数据: rng(66221704);%为了再现性 N=2; tmp=单元(1234); 对于k=1:numel(tmp) 如果rand(1)<0.6%,则以一定概率创建嵌套单元 tmp{k}=getLowerCastering(N); 其他的 tmp{k}={getlowercastering(N),getlowercastering(N)}; 结束 结束 %%展平单元阵列: new=[tmp{:}];%尺寸=1x352 %%保持统一: unq=唯一(新);%尺寸=1x259 结束 函数c=GetLowerCastering(nChars) c=字符(随机数([97122],[1,nChars]); 结束
这是可能的,是的。但是,具体的实现取决于数据的结构,特别是嵌套的深度、是否只包含单元格等。还取决于解决方案的效率。如果所有数据都是嵌套在深度未知的单元格中的字符向量,则可以创建一个字符串向量,然后迭代+递归地“取消装箱”单元格数组,并将条目分配给该向量。一旦您的数据结构被展平,删除重复项就很简单了(使用
unique
)。谢谢您的回答。很难理解你的意思。它的巢不是很深。最深的级别是我之前发布的级别。tmp{1,167}{1,1}->'Ro'tmp{1,167}{1,2}->'CvF'数组的内容仅为字母。
tmp{1, 167}-> 'Ro'
tmp{1, 168}-> 'CvF'