我想阅读表单的文本文件:
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
答案 0 :(得分:1)
您应首先添加以下内容:
C = C{1};
%# then you can use
C{1}
C{2}
C{3}
这是因为在你的情况下,TEXTSCAN返回一个1乘1的单元阵列C,其第一个元素是一个三元素的单元阵列。
答案 1 :(得分:0)
TEXTSCAN的输出是一个单元数组,它本身包含各种数据输入的数组。在您的情况下,所有数据都填充到单个单元格阵列中。要访问每个条目,请执行以下操作:
>> C = textscan(fid, '%s'); >> C{1}{1} ans = gatcgtacgtcgatgc >> C{1}{2} ans = gtcgtacgatcgcatg >> C{1}{3} ans = cagctgactgatcgatcg
请注意,您无需将\n
指定为分隔符,因为这是默认的行尾字符。