0

这是我需要从输入中选择一个元素的代码的一部分。最终结果以一种奇怪的方式排序,它将创建 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 中。

此代码的结果是:

答案=

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

一些 seqNams 仅包含一个结合位点 (CAGCTG)。例如:

答案=

'M13483'    '445-450'    'CAACTG'

现在我只想选择(CAGCTG,CAGGTG,CAACTG,...等)的绑定站点

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

struSize = 长度(struKm);tempcell = 细胞(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

结尾

以及此代码的结果:

结果k.BS{:}

答案=

'CAGCTG'    'CAGGTG'

答案=

'CAACTG'

答案=

'CAACTG'

一些具有两个结合位点的细胞的问题,使 <1x2 细胞> 紧挨着 <1x1 细胞>。

我需要它们都排成一排。仍在为此苦苦挣扎。你能帮忙吗?

谢谢你,A

4

1 回答 1

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 单元格。这是你需要的吗?

于 2012-10-03T17:04:23.420 回答