【问题标题】:matlab string arraysmatlab 字符串数组
【发布时间】:2012-06-19 20:37:07
【问题描述】:

我有一个要分析的文件列表。它们都被命名为 chr1.fa, chr2.fa, ... , chr22.fa, chrX.fa

我想将所有这些文件名存储在一个数组中。我知道在 python 中你可以做到

files = ["chr"+str(x)+".fa" for x in range(1,22)]+["chrX.fa"]

尝试在 Matlab 中做同样的事情时,我遇到了令人尴尬的困难。否则,我将不得不像这样初始化文件:

文件 = {'chr1.fa','chr2.fa',...,'chr22.fa','chrX.fa'}

这确实不太理想,因为我可能要处理更多文件。

任何关于我应该在哪里寻找的指针将不胜感激。

谢谢!

【问题讨论】:

    标签: string matlab


    【解决方案1】:

    这并不像 Python 那样紧凑,但它会为您完成这项工作。

    N = 20;
    
    prefix = 'chr';
    suffix = '.fa';
    
    names = cell(N,1);
    
    for n = 1:N
        names{n} = [prefix int2str(n) suffix];
    end
    
    names{N+1} = [prefix 'X' suffix];
    

    您可以通过names{index} 获取姓名。注意花括号,因为这是一个元胞数组,而不是多维字符数组。

    【讨论】:

    • @Jamie,如果您觉得问题已得到回答(并且选项可用),请对好的答案投赞成票并最终“接受”您认为最好的答案是有礼貌的。
    【解决方案2】:

    这是使用sprintfstrsplit 的更简洁的版本:

    files = strsplit(sprintf('chr%i.fa ',1:22),' ');
    
    files{end} = 'chrX.fa';
    

    【讨论】:

      【解决方案3】:

      这是一个单线,只是为了好玩。 @Phonon 的方式太明显了。

       files = [arrayfun(@(x)strcat('chr',num2str(x),'.fa'),(1:22)','uni',0); 'chrX.fa']
      

      【讨论】:

        【解决方案4】:

        试试:

        files = [strtrim(cellstr(num2str((1:22)','chr%d.fa'))) ; 'chrX.fa']
        

        【讨论】:

          【解决方案5】:

          旧主题,但从 16b 开始,使用新的字符串数据类型使这变得非常容易:

          >> files = ["chr" + (1:22) + ".fa", "chrX.fa"]'
          
          files = 
          
            23×1 string array
          
              "chr1.fa"
              "chr2.fa"
              "chr3.fa"
              "chr4.fa"
              "chr5.fa"
              "chr6.fa"
              "chr7.fa"
              "chr8.fa"
              "chr9.fa"
              "chr10.fa"
              "chr11.fa"
              "chr12.fa"
              "chr13.fa"
              "chr14.fa"
              "chr15.fa"
              "chr16.fa"
              "chr17.fa"
              "chr18.fa"
              "chr19.fa"
              "chr20.fa"
              "chr21.fa"
              "chr22.fa"
              "chrX.fa"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多