matlab:struct buffer size大于4096?

时间:2012-07-04 13:01:16

标签: matlab file-io buffer

我有一个其他人编码的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);

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

尝试增加缓冲区大小:

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

选择适合您的价值

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