2014-07-07 364 views
0

我想比較兩個字符串的名稱,並嘗試挑出未包含在其他字符串中的名稱。比較字符串名稱

h = 1; 
for i = 1:name_size_main 
    checker = 0; 
    main_name = main(i); 
    for j = 1:name_size_image 
     image_name = image(j); 
     temp = strcmpi(image_name, main_name); 
     if temp == 1; 
      checker = temp; 
     end 
    end 
    if checker == 0 
     result(h) = main_name; 
     h = h+1; 
    end 
end 

但它一直返回整個字符串作爲結果時,主字符串包含大約1000名,圖像名包含約300名,所以應該在結果返回約700名,但它的回頭率所有1000名。

+0

請張貼與期望的輸入和輸出 –

+0

一個小例子,你用一個向量儲存你的名字(比如'['aaa''bbb''ccc']')? –

+0

所以輸入是在300 x 1和1000 x 1像{{aaa','bbb','ccc'}和{'ccc','bbb'}我想要的是'aaa'部分,300 x 1單元格包含300名稱是在1000 x 1單元格內,但這些名稱是隨機分佈的,我想查找700個不在300 x 1單元格中的名稱 – user2683631

回答

1

我試着用小載體代碼:

main = ['aaa' 'bbb' 'ccc' 'ddd']; 
image = ['bbb' 'ddd']; 
name_size_main = size(main,2); 
name_size_image = size(image,2); 

h = 1; 
for i = 1:name_size_main 
    checker = 0; 
    main_name = main(i); 
    for j = 1:name_size_image 
     image_name = image(j); 
     temp = strcmpi(image_name, main_name); 
     if temp == 1; 
      checker = temp; 
     end 
    end 
    if checker == 0 
     result(h) = main_name; 
     h = h+1; 
    end 
end 

我得到result = 'aaaccc',這不正是你想要得到什麼?

編輯:

如果使用的是電池陣列,您應該行result(h) = main_name;更改爲result{h} = main_name;這樣的:

main = {'aaa' 'bbb' 'ccc' 'ddd'}; 
image = {'bbb' 'ddd'}; 
name_size_main = size(main,2); 
name_size_image = size(image,2); 
result = cell(0); 
h = 1; 
for i = 1:name_size_main 
    checker = 0; 
    main_name = main(i); 
    for j = 1:name_size_image 
     image_name = image(j); 
     temp = strcmpi(image_name, main_name); 
     if temp == 1; 
      checker = temp; 
     end 
    end 
    if checker == 0 
     result{h} = main_name; 
     h = h+1; 
    end 
end 
+0

這就是我想要的,但我不能得到那個...我有什麼是1000×1細胞和300×1細胞 – user2683631

+0

@ user2683631檢查編輯我的答案。 –

0

您可以使用字符串的單元格以及setdiffsetxor

A = cellstr(('a':'t')') % a cell of string, 'a' to 't' 
    B = cellstr(('f':'z')') % 'f' to 'z' 

    C1 = setdiff(A,B,'rows') % gives 'a' to 'e' 
    C2 = setdiff(B,A,'rows') % gives 'u' to 'z' 
    C3 = setxor(A,B,'rows') % gives 'a' to 'e' and 'u' to 'z' 
+0

這是我用setdiff得到的class cell的輸入A和class cell的輸入B必須是字符串的單元數組,除非 one是一個字符串。 – user2683631