3

分析したいファイルのリストがあります。それらはすべて、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'}

より多くのファイルを処理する可能性があるため、これは実際には理想的ではありません。

私がどこを見なければならないかについての指針は大歓迎です。

ありがとう!

4

5 に答える 5

3

sprintfandを使用したより簡潔なバージョンを次に示しstrsplitます。

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

files{end} = 'chrX.fa';
于 2012-06-19T23:18:35.323 に答える
3

これは 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}。これはセル配列であり、多次元文字配列ではないため、中かっこに注意してください。

于 2012-06-19T20:47:50.580 に答える
2

楽しみのために、ここにワンライナーを示します。@Phononのやり方は明らかにあまりにもうまくいきます。

 files = [arrayfun(@(x)strcat('chr',num2str(x),'.fa'),(1:22)','uni',0); 'chrX.fa']
于 2012-06-19T20:59:54.503 に答える
1

試す:

files = [strtrim(cellstr(num2str((1:22)','chr%d.fa'))) ; 'chrX.fa']
于 2012-06-21T08:57:48.687 に答える