如何创建一个包含字符串所有前缀的表

时间:2016-01-13 09:50:04

标签: string matlab prefix

我有一个字符串数组:对于每个字符串,我找到前缀和后缀;我采取postfix,查找前缀和后缀,我重复这个过程,直到字符串的值完成。我想创建一个包含所有前缀链接的表。示例:

Pfx Pfx2  
'1' '2'                      ---->  1-->2,3
'1' '3' 
'2' ''                       ---->  2-->'',1,3,4
'2' ''
'2' '1'
'2' '1'
'2' '1'
'2' '3'
'2' '3'
'2' '3'
'2' '3'
'2' '4'
'2' '4'
'3' ''                        ---> 3--> '',1,2
'3' ''
'3' ''
'3' ''
'3' '1'
'3' '2'
'3' '2'

最后,我会得到一张桌子

Prefix  
  '1'       '2'
            '3'
  '2'       '1'
            '2'
            '3'
  '3'       '1'
            '2'

我使用unique来查找pfx中的唯一值,但我不知道如何链接到这个值,pfx2中的值:你可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

我认为这可能会起作用,您应该能够从unique函数获取索引,其余的只是分组和排序。我以循环的形式给出了我的例子,这样你就可以看到发生了什么。

pfx1 = {'1','1','1','1','2','2','2','3','3','3','1'};
pfx2 = {'','6','9','g','','','17','21','a','b','z'};
 [C ia ic] = unique(pfx1);

 for t = 1: size(C,2)
    D{t} =  pfx2(ic == t);
 end

 E = vertcat(C,D);

最后,您将留下“1”,“2”和“3”列,后跟一个由所有相应的pfx2读数组成的单元格。

如果你想要一张桌子,你需要用零或NaN填充空白条目,你应该使用cell2table,它应该类似于:

E = cell2table(D,'VariableNames',C) %remember you need to pad the blank entries first.

请有人测试/纠正此问题,我今天在家工作,只能访问没有此功能的2010版。