0

次の形式のテキストファイルを読みたい:

gatcgtacgtcgatgc
gtcgtacgatcgcatg 
cagctgactgatcgatcg 

。したがって、各行は文字列であり、区切り文字は次のとおりです。\n. このファイルがと呼ばれるとし'data.txt'ます。私は思うだろう

fid = fopen('data.txt')
C = textscan(fid, '%s', 'delimiter', '\n')
fclose('data.txt')

で3x1セルを取得しC{1} = 'gatcg....' , C{2} = 'gtcgt....' and C{3} = 'cagctg....'ます。

これはそうではありません。それは私に教えてくれC = {3x1 cell}ます。ただし、次の動作が発生します。

C{1}

ans = 

   'gatc...'

   'gtcg...'

   'cagc...'

C{2} 
??? Index exceeds matrix dimensions

C{3}
??? Index exceeds matrix dimensions.

ここで何が起こっているのですか?o_O

4

2 に答える 2

1

最初に次を追加する必要があります。

C =  C{1};

%# then you can use
C{1}
C{2}
C{3}

これは、あなたの場合、 TEXTSCAN が 1 行 1 列のセル配列 C を返し、その最初の要素が 3 要素のセル配列であるためです。

于 2011-08-24T23:29:28.130 に答える
0

TEXTSCANの出力は、さまざまなデータ入力の配列を含むセル配列です。あなたの場合、すべてのデータが単一のセル配列に詰め込まれています。各エントリにアクセスするには、次のようにします。

>> C = textscan(fid, '%s');
>> か{1}{1}

ans =

gatcgtacgtcgatgc

>> か{1}{2}

ans =

gtcgtacgatcgcatg

>> し{1}{3}

ans =

cagctgactgatcgatcg

\nこれがデフォルトの行末文字であるため、区切り文字として示す必要はないことに注意してください。

于 2011-08-24T23:28:40.950 に答える