在MATLAB中读取之前,找出* .bin或* .dat文件中存在多少个样本

时间:2012-06-21 19:38:27

标签: matlab file-io

我想弄清楚如何在MATLAB中告诉我在给定* .bin或* .dat文件中存在多少样本,然后再继续阅读它。

显然,我之前知道数据类型,(float,int16等)。

我知道我可以使用类似的东西:

fid = fopen('foo.bin', 'r');
data = fread(fid, inf, 'int16');
fclose(fid);

,此代码将读取所有样本,但问题是我想知道文件的大小,以便我可以分解如何阅读它。我正在处理的文件很棒,我不能使用inf。 (或者,如果我可以,它需要永远)。

总而言之,我希望能够找到一种方法,通过MATLAB告诉我在* .bin文件中有多少样本(指定类型),以便我可以决定如何把它分开。

谢谢!

2 个答案:

答案 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;

然后从现在开始,我可以根据需要对文件进行分析。 : - )