作者MPL (:))
看板MATLAB
标题Re: [问题] txt读档如何只读某几行
时间Tue Nov 22 12:54:37 2011
先谢谢原文让我有头绪,想请教一下如何让我的程式变快一点
因为现在的写法感觉笨了点,跑起来很慢,还请各位指教
--
假设我想要读的档案中有A、B、C、D 四个变数,变数间的size不一定一样
档案的排序如下,数字代表时间的不同
A1
(3*10的矩阵)
B1
(2*10的矩阵)
C1
(1*10的矩阵)
D1
(7*10的矩阵)
A2
(3*10的矩阵)
B2
(2*10的矩阵)
C2
(1*10的矩阵)
D2
(7*10的矩阵)
.
.
.
.
程式的output我想要将每个变数分别存档
以下是我程式的写法,因为一个文字档有214MB,而变数有17个
每次读一个档案都要好久,不知道有没有比较好的办法来加快读取的速度
--
clear
clc
parameters=[' A';' B';' C';' D';' A'];
L_p=length(parameters);
new_reading=1;
for index_par=1:L_p-1
fid=fopen('test.txt');
read_data=[];
i=0;
while new_reading ~= -1
new_reading=fgets(fid);
index_word=strfind(new_reading,parameters(index_par,1:4));
if index_word==1
i=i+1;
new_reading=fgets(fid);
[read_data]=[read_data,str2num(new_reading)];
new_reading=fgets(fid);
index_word=strfind(new_reading,parameters(index_par+1,1:4));
while isempty(index_word)==1 & new_reading ~= -1
[read_data]=[read_data,str2num(new_reading)];
new_reading=fgets(fid);
index_word=strfind(new_reading,parameters(index_par+1,1:4));
end
output{i}=read_data;
end
read_data=[];
end
% 开始存档
if index_par==1
A=output;
save A.mat A
elseif index_par==2
B=output;
save B.mat B
elseif index_par==3
C=output;
save C.mat C
elseif index_par==4
D=output;
save D.mat D
end
output=[];
new_reading=1; %initial input
fclose(fid);
end
--
如果表达得不好,还请见谅,先谢过各位了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 136.186.19.184
※ 编辑: MPL 来自: 136.186.19.184 (11/22 12:55)