0

在继续阅读之前,我试图弄清楚如何在 MATLAB 中判断给定的 *.bin 或 *.dat 文件中存在多少样本。

显然,我事先知道数据类型(float、int16 等)。

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

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

,并且这段代码将读取所有样本,但问题是我想知道文件开始时有多大,以便我可以划分如何读取它。我正在处理的文件非常庞大,我无法使用 inf。(或者如果可以的话,它需要永远)。

总而言之,我希望能够找到一种方法来通过 MATLAB 判断我的 *.bin 文件中有多少个样本(指定类型),以便我可以决定如何划分它向上。

谢谢!

4

2 回答 2

3

您可以从目录列表中得知文件的大小。函数 dir(...) 返回文件中的字节数:

filename = 'foo.bin';

tooBig = 1e6;
fileInfo = dir(filename);
bytesInMyFile = fileInfo.bytes;

if bytesInMyFile > tooBig
    disp('File is Too Big!');
end
于 2012-06-21T20:34:25.743 回答
1

好的,所以答案如下:

BytesPerSample = 4;  %for example
fid = fopen('foo.bin', 'r');
fseek(fid, 0, 'eof');
pos = ftell(fid);
fclose(fid);
NumSamples = pos / ByesPerSample;

然后从这里开始,我可以根据需要分割文件。:-)

于 2012-06-21T20:30:40.720 回答