0

我想阅读以下形式的文本文件:

gatcgtacgtcgatgc
gtcgtacgatcgcatg 
cagctgactgatcgatcg 

. 所以每一行都是一个字符串,分隔符是\n. Suppose this file is called '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,其中它的第一个元素是一个三元素元胞数组。

于 2011-08-24T23:29:28.130 回答
0

TEXTSCAN的输出是一个元胞数组,它本身包含各种数据输入的数组。在您的情况下,所有数据都填充到一个单元格数组中。要访问每个条目,请执行以下操作:

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

答案=

gatcgtacgtcgatgc

>> C{1}{2}

答案=

gtcgtacgatcgcatg

>> C{1}{3}

答案=

cagctgactgatcgatcg

请注意,您不需要指示\n为分隔符,因为这是默认的行尾字符。

于 2011-08-24T23:28:40.950 回答