1

私は 516096x1 のベクトルを持っています。データ サンプルはすべて整数の 10 進数値であり、次のようになりますが、10 進数の列のみです。

(10進数)

1416
258
-258

2189

1545

それらを変数に格納しました。次に、その変数をバイナリ ファイルに書き込みます。問題は、変数をファイルに書き込むと、特定の値が誤って置き換えられることです。

私のコードは次のとおりです。

Samples = (all the 516096 samples)
fwrite(fid1, Samples, 'int16')

すべての整数を 16 進数で (16 進数エディターを使用して) ファイルに書き込みますが、8D に相当する 10 進数の整数に達すると、16 進数エディターで 3F に置き換えます。8Fは3Fに、81は3Fに変更。また、0A は 0D に置き換えられます。なぜMatlabはそうするのですか?int16 として読み込んで int16 として書きました。

4

2 に答える 2

0

( tashuhkaが指すように) signed int を使用していますが、明らかに 16 ビットでは不十分です。オーバーフローがあります。

符号付きの数値が必要なので (負の数値もあります)、32 ビットを使用する必要があります。

fwrite( fid1, Samples, 'int32');
于 2013-04-03T07:56:57.983 に答える