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 に答える