我想弄清楚如何在MATLAB中告诉我在给定* .bin或* .dat文件中存在多少样本,然后再继续阅读它。
显然,我之前知道数据类型,(float,int16等)。
我知道我可以使用类似的东西:
fid = fopen('foo.bin', 'r');
data = fread(fid, inf, 'int16');
fclose(fid);
,此代码将读取所有样本,但问题是我想知道文件的大小,以便我可以分解如何阅读它。我正在处理的文件很棒,我不能使用inf。 (或者,如果我可以,它需要永远)。
总而言之,我希望能够找到一种方法,通过MATLAB告诉我在* .bin文件中有多少样本(指定类型),以便我可以决定如何把它分开。
谢谢!
答案 0 :(得分:3)
您可以从目录列表中了解文件的大小。函数dir(...)返回文件中的字节数:
filename = 'foo.bin';
tooBig = 1e6;
fileInfo = dir(filename);
bytesInMyFile = fileInfo.bytes;
if bytesInMyFile > tooBig
disp('File is Too Big!');
end
答案 1 :(得分:1)
好的,答案如下:
BytesPerSample = 4; %for example
fid = fopen('foo.bin', 'r');
fseek(fid, 0, 'eof');
pos = ftell(fid);
fclose(fid);
NumSamples = pos / ByesPerSample;
然后从现在开始,我可以根据需要对文件进行分析。 : - )