首先不能使用load函数的原因是内存不够不能读还是读取速度太慢?
如果内存不够的话那就只能用fgetl; 如果读取速度慢的话可以先读一遍然后存为mat文件; 以后导入的时候只需要load mat文件速度能快很多(真的是很多),这时候数据仍然是浮点数格式的,可以直接用矩阵访问方式访问。load mat文件的好处是速度快,缺点是数据会占用内存空间。
如果用fgetl的话,读出来的一行是以字符串形式。需要进行分割转换才能成为可用的数据。而且速度会慢一点,而且由于只能逐行读,读越后面的行速度就越慢。
下面是一个简单的例子,建议仔细理解
% ---------------------------------------------------------------------------------
commandLine = '12.3 14.5 15.5';
commandLine=regexp(commandLine,' ','split'); %以空格为特征分割字符串
for i = 1:size(commandLine,2)
command=str2num(char(commandLine(i)));
command - 1 % 验证是否最后是可进行数学运算的浮点数格式
end
% ----------------------------------------------------------------------------------
如果数据格式并不像上面给的例子那么好的话,建议先进行相应的处理。
鉴于LZ似乎对fgetl不熟悉,请理解下面代码:
fid = fopen('inputFile.txt','r');
line = 1; %行标记
while ~feof(fid)
lineData = fgetl(fid);
if line == 5
% 对特定行的lineData进行处理,可以适当采用跳出循环的语句节省运算时间
end
line=line+1;
end
fclose(fid);
fnm = '1.txt';
dt = textread(fnm);
x = dt(:,1);
y = dt(:,2);
z = dt(:,3);