0

我有一个其他人编写的 matlab 脚本,它无法加载长度超过 4095 的字符串序列(缓冲区大小错误)。如何使元素struct更大以容纳更大的字符串序列?这是创建的代码位struct

    [...]
    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);

有任何想法吗?

4

1 回答 1

2

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

尝试增加缓冲区大小:

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

选择适合您的值

顺便说一句,TEXTREAD 现在已经过时了,考虑升级到 TEXTSCAN

于 2012-07-04T13:46:35.680 回答