我想在一个步骤中将一个(相当大的)日志文件读入MATLAB字符串单元格.我用过通常的:
s={};
fid = fopen('test.txt');
tline = fgetl(fid);
while ischar(tline)
s=[s;tline];
tline = fgetl(fid);
end
Run Code Online (Sandbox Code Playgroud)
但这很慢.我发现了
fid = fopen('test.txt');
x=fread(fid,'*char');
Run Code Online (Sandbox Code Playgroud)
更快,但我得到一个nx1char矩阵,x.我可以尝试转换x为字符串单元格,但后来我进入char编码地狱; 行分隔符似乎是\n\r,或者是ASCII中的 10和56 (我看过第一行的末尾),但这两个字符通常不会相互跟随,甚至有时会出现独奏.
有一种简单快捷的方法可以一步将ASCII文件读入字符串单元格,还是转换x为字符串单元格?
通过fgetl阅读:
Code Calls Total Time % Time
tline = lower(fgetl(fid)); 903113 14.907 s 61.2%
Run Code Online (Sandbox Code Playgroud)
通过恐惧阅读:
>> tic;for i=1:length(files), fid = open(files(i).name);x=fread(fid,'*char*1');fclose(fid); end; toc
Elapsed time is 0.208614 seconds.
Run Code Online (Sandbox Code Playgroud)
我测试了预分配,它没有帮助:(
files=dir('.');
tic
for i=1:length(files),
if files(i).isdir || isempty(strfind(files(i).name,'.log')), continue; end
%# preassign s to some large cell …Run Code Online (Sandbox Code Playgroud) 是否有一些jQuery代码用动画交换2组元素?
我只发现 使用jQuery将移动列表项置于无序列表的顶部但它太有限(只有滑动元素到顶部而不考虑不同的边距).