【问题标题】:matlab: help in ordering cells contentsmatlab:帮助排序单元格内容
【发布时间】:2023-12-26 18:56:01
【问题描述】:

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

现在我只想选择绑定站点(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

结束

以及这段代码的结果:

resultsk.BS{:}

ans =

'CAGCTG'    'CAGGTG'

ans =

'CAACTG'

ans =

'CAACTG'

一些具有两个结合位点的细胞的问题使得 紧邻 。

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

谢谢你, 一个

【问题讨论】:

    标签: matlab sorting split cell-array


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

    【讨论】: