2012-07-04 41 views
0

我有一个其他人编码的matlab脚本,它无法加载长度超过4095(缓冲区大小错误)的字符串序列。如何让struct中的元素变大以容纳更大的字符串序列?下面是代码,创建struct位:matlab:struct buffer size大于4096吗?

[...] 
    seq = struct('Header',{}, 'Sequence', {}); 
    for ii=1:gene_num 
     seq(ii).Header = raw{ii+1,1}; 
     seq(ii).Sequence = raw{ii+1,2}; 
    end; 
    [...] 

以下是错误:

^G??? Buffer overflow (bufsize = 4095) while reading string from 
file (row 54660, field 1). Use 'bufsize' option. See HELP TEXTREAD. 

Error in ==> textread at 177 
[varargout{1:nlhs}]=dataread('file',varargin{:}); 

Error in ==> fastaread at 101 
    ftext = textread(filename,'%s','delimiter','\n'); 

Error in ==> tfbs_scanner_zscore at 8 
S = fastaread(fin); 

任何想法?

+1

什么恰恰做了错误说,并发生在哪一行? – tmpearce

+2

因此,您按照建议键入'help textread',然后阅读帮助文本并找到'bufsize'参数,然后执行了哪些操作? –

回答

2

您试图读取的文件包含比TEXTREAD函数中使用的默认缓冲区大小更长的行。

尝试增加缓冲区大小:

ftext = textread(filename, '%s', 'delimiter','\n', 'bufsize',50000); 

选择适合您

工作顺便说一个值,TEXTREAD现在已经过时了,可以考虑升级到TEXTSCAN

相关问题