matlab:帮助订购单元格内容

时间:2012-10-03 16:23:34

标签: matlab sorting split cell-array

这是我的代码的一部分,我需要从输入中选择一个元素。最后的结果是以一种奇怪的方式排序,它将创建1X2单元而不是将它们放在一起!

  struKm(i).seqNam = cellstr(regexp(data(i).Header, '\s\||\:|\|','split')); % determen the seqance name heads 
  struKm(i).seqNam(cellfun(@(x) isempty(x),struKm(i).seqNam))=[];

此代码位于FOR LOOP中。

此代码的结果是:

ans =

'AF051909'    '392-397'    'CAGCTG'    '413-418'    'CAGGTG'

某些seqNams只包含一个绑定站点(CAGCTG)。例如:

ans =

'M13483'    '445-450'    'CAACTG'

现在我只想选择Binding网站(CAGCTG,CAGGTG,CAACTG,...等)

我有另一个for循环可以做到这一点。代码:

struSize = length(struKm); tempcell = cell(1,1);

表示m = 1:struSize

if (length(struKm(m).seqNam) == 3)
  resultsk.BS{m} = struKm(m).seqNam(3); 
          disp(m);

end
if (length(struKm(m).seqNam) == 5)
 resultsk.BS{m} = cellstr(struKm(m).seqNam([3,5]));
  %tempcell = struKm(m).seqNam([3,5]); resultsk.BS{m} = cellstr(tempcell);
    disp(m);
end

以及此代码的结果:

  
    

resultsk.BS {:}

  

ans =

'CAGCTG'    'CAGGTG'

ans =

'CAACTG'

ans =

'CAACTG'

具有两个结合位点的一些细胞的问题,其产生< 1x2细胞>紧邻< 1x1 cell>。

我需要一排排。仍在努力解决这个问题。你能帮忙吗?

谢谢你, 甲

1 个答案:

答案 0 :(得分:1)

这是一个很长的解释,但如果我理解正确,只有结局非常重要

resultsk.BS{1} = {'CAGCTG'    'CAGGTG'};
resultsk.BS{2} = {'CAACTG'};
resultsk.BS{3} = {'CAACTG'};
resultsk.BS{:}  % this gives 'your' answer

现在您可以连接单元格输出

A = [resultsk.BS{:}]
A = 

'CAGCTG'    'CAGGTG'    'CAACTG'    'CAACTG'

whos A
 A         1x4               496  cell               

所以现在这是一个1x4的细胞。这是你需要的吗?