1

cellarray GOの4番目の列の各セルの文字の出現数に追加の列を追加するコードを作成する必要があります:

GO:
      'GO:0008150'    [1]    [1]    'a'
      'GO:0016740'    [2]    [2]    'b'
      'GO:0006412'    [2]    [2]    'b'
      'GO:0016787'    [2]    [3]    'c'
      'GO:0006810'    [2]    [4]    'd'
      'GO:0016787'    [3]    [3]    'c'
      'GO:0004672'    [3]    [3]    'c'
      'GO:0016779'    [3]    [3]    'c'
      'GO:0005215'    [3]    [3]    'c'
      'GO:0006810'    [3]    [4]    'd'
      'GO:0004386'    [3]    [4]    'd'
      'GO:0003774'    [3]    [4]    'd'
      'GO:0016298'    [3]    [4]    'd'
      'GO:0016192'    [3]    [5]    'e'
      'GO:0006412'    [3]    [2]    'b'
      'GO:0005215'    [3]    [3]    'c'
      'GO:0006810'    [4]    [4]    'd'
      'GO:0004386'    [4]    [4]    'd'
      'GO:0003774'    [4]    [4]    'd'
      'GO:0016298'    [4]    [4]    'd'
      'GO:0030533'    [4]    [4]    'd'
      'GO:0030533'    [4]    [4]    'd'
      'GO:0016192'    [4]    [5]    'e'

結果のGOセルアレイは次のようになります(0の値から開始)。

GO:     
  'GO:0008150'    [1]    [1]    'a'   '0'
  'GO:0016740'    [2]    [2]    'b'   '0'
  'GO:0006412'    [2]    [2]    'b'   '1'
  'GO:0016787'    [2]    [3]    'c'   '0'
  'GO:0006810'    [2]    [4]    'd'   '0'
  'GO:0016787'    [3]    [3]    'c'   '1'
  'GO:0004672'    [3]    [3]    'c'   '2'
  'GO:0016779'    [3]    [3]    'c'   '3'
  'GO:0005215'    [3]    [3]    'c'   '4'
  'GO:0006810'    [3]    [4]    'd'   '1'
  'GO:0004386'    [3]    [4]    'd'   '2'
  'GO:0003774'    [3]    [4]    'd'   '3'
  'GO:0016298'    [3]    [4]    'd'   '4'
  'GO:0016192'    [3]    [5]    'e'   '0'
  'GO:0006412'    [3]    [2]    'b'   '2'
  'GO:0005215'    [3]    [3]    'c'   '5'
  'GO:0006810'    [4]    [4]    'd'   '5'
  'GO:0004386'    [4]    [4]    'd'   '6'

次のコードを試しましたが、とにかく機能しません。

x3=[];  % for saving the resulted numbers 
z=0:length(GO);  % will take the numbers from this matrix
z=z';
 for j=1:length(num2alph)
     for k=1:length(GO)
 for i=1:length(GO)
         if isequal(GO{i,4},num2alph{j})
                   x3{i}=z(k);
    else
     end
     end
     end
 end
   x3=x3';
   GO1=[GO x3];

ここで、cellarray num2alph(GO配列の4番目の列と比較して番号付け列を作成します)は次のとおりです。

  'a'          
  'b'        
  'c'    
  'd'   
  'e'    
  'f'    
  'g'   
  'h'   
  'i'    
  'j'    
  'k'  

また、最後の2つの列を互いにマップして、同じセルに配置する必要があります。次に例を示します。

         'a'   '0'  ===>  a0
         'b'   '2'  ===>  b2

何かアドバイス

どうも

4

2 に答える 2

3

これでうまくいくはずです:

un = unique(GO(:,4));

results = zeros(size(GO(:,4)));
for ii = 1:numel(un)

    inds = strcmp(GO(:,4), un(ii));
    count = max(0, cumsum(inds)-1);

    results(inds) = count(inds);
end


GO = [GO  num2cell(results)]
于 2012-10-31T10:42:02.160 に答える
2

cellhist、ユーザー定義関数は、ここで本当にあなたの友達になることができます。それはあなたのニーズを正確に修正するようです。

于 2012-10-31T10:09:47.417 に答える