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

在MATLAB中读取之前,先找出*.bin或*.dat文件中存在多少样本,matlab,file-io,Matlab,File Io,在我继续阅读之前,我试图弄清楚如何在MATLAB中判断给定的*.bin或*.dat文件中存在多少样本 显然,我知道数据类型(float、int16等) 我知道我可以使用类似于: fid = fopen('foo.bin', 'r'); data = fread(fid, inf, 'int16'); fclose(fid); ,这段代码将读取中的所有示例,但问题是我想知道文件的开头有多大,这样我就可以划分如何读取它。我正在处理的文件非常庞大,我不能使用inf(或者如果可以的话,它会花费很长时间

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

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

我知道我可以使用类似于:

fid = fopen('foo.bin', 'r');
data = fread(fid, inf, 'int16');
fclose(fid);
,这段代码将读取中的所有示例,但问题是我想知道文件的开头有多大,这样我就可以划分如何读取它。我正在处理的文件非常庞大,我不能使用inf(或者如果可以的话,它会花费很长时间)

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


谢谢

好的,答案如下:

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

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

好的,答案如下:

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

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

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

filename = 'foo.bin';

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

if bytesInMyFile > tooBig
    disp('File is Too Big!');
end

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

filename = 'foo.bin';

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

if bytesInMyFile > tooBig
    disp('File is Too Big!');
end

既然您知道数据类型,就不能将文件大小除以一个样本的大小吗?@Jonas如何在MATLAB中自动获得文件大小?无论如何,我已经回答了这个问题,我认为这会起作用。既然你知道数据类型,你就不能把文件大小除以一个样本的大小吗?@Jonas如何在MATLAB中自动获得文件大小?不管怎样,我已经回答了,我想这会奏效的。啊!很高兴知道,我不知道那个命令。我想不止一种剥猫皮的方法。:-)啊!!很高兴知道,我不知道那个命令。我想不止一种剥猫皮的方法。:-)