Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何在MATLAB中获得文件的长度?_File_Matlab_File Format - Fatal编程技术网

File 如何在MATLAB中获得文件的长度?

File 如何在MATLAB中获得文件的长度?,file,matlab,file-format,File,Matlab,File Format,有没有办法在不将文件加载到工作区的情况下计算.dat文件的长度(以行为单位)?我假设您正在处理文本文件,因为您提到了查找行数。 这里有一个解决方案: fid = fopen('your_file.dat','rt'); nLines = 0; while (fgets(fid) ~= -1), nLines = nLines+1; end fclose(fid); 这用于读取每一行,计算它读取的行数。请注意,文件中的数据从未保存到工作区,它只是在while循环的条件检查中使用。还需要记住,

有没有办法在不将文件加载到工作区的情况下计算.dat文件的长度(以行为单位)?

我假设您正在处理文本文件,因为您提到了查找行数。 这里有一个解决方案:

fid = fopen('your_file.dat','rt');
nLines = 0;
while (fgets(fid) ~= -1),
  nLines = nLines+1;
end
fclose(fid);

这用于读取每一行,计算它读取的行数。请注意,文件中的数据从未保存到工作区,它只是在while循环的条件检查中使用。

还需要记住,您可以使用文件系统的内置命令,因此在linux上可以使用该命令

[s,w] = system('wc -l your_file.dat');
然后从返回的文本(存储在
w
中)中获取行数。(我认为Windows下没有等效的命令。)

行计数器--每行仅加载一个字符:

Nrows = numel(textread('mydata.txt','%1c%*[^\n]'))
或文件长度(Matlab):


如何定义此文件格式的“行”?是否为每行一行的文本文件,以\n结尾?还是固定长度的二进制记录?还是别的?这排柜台很干净。谢谢你的发帖!testread将在未来的Matlab版本中删除。与textscan对应的版本是nrows=numel(cell2mat(textscan(fid),%1c%*[^\n]'))。@Yantaxie,Alex K.,这种方法明显比仅使用
fgets()
计算行要快。当处理1M行遥测文件时,它会节省几秒钟。这样,您将得到s命令wc的返回值(即,0或零的不同值),而在w中,您将得到一个字符串,其中的行数与文件名连接在一起。您需要用[nlines fname]=strtok(w,,)将它们分开
datfileh = fopen(fullfile(path, filename));
fseek(datfileh, 0,'eof');
filelength = ftell(datfileh);
fclose(datfileh);