GNU/Linux >> Linux の 問題 >  >> Linux

Matlab の fwrite:スキップされたバイトはどうなりますか?

この種の質問では、通常、あまり複雑でない場合は自分で試してみることが最も簡単な方法です。あなたは Linux を使用していることを示しました。 、お使いのプラットフォームでテストを繰り返して、結果が一致するかどうかを確認してください。

Windows の場合 プラットフォーム、skip 値:

  • に実装されている 書き込む最初の値
  • スキップされたすべてのバイトが値 00 にあるようです (おそらく、OS がファイルの新しい値として割り当てるもの)

例:

このコード:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
fclose(fid)

次のファイルを生成します (16 進エディタで表示):

書き込む値が複数ある場合:

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

それでも 10x 00 を取得します 各 short の前の値 あなたが積極的に書く値:

これは、新しく作成されたファイルの場合でした。既存のファイルに何が起こったのか見てみましょう:

%% Let's create a file full of `FF`
FFarray = uint8(ones(36,1)*255) ;
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,FFarray,'uint8')
fclose(fid)

与える:

以前と同じコードを使用して ( permission w に設定 ):

fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

はい、同じ結果が得られます。これで、指定した許可に関する MATLAB ドキュメントと一致するようになりました:

w =>書き込み用に新しいファイルを開くか作成します。 既存のコンテンツを破棄

その許可を単に r+ に変更すると、 (読み書き用にファイルを開く。 ):

fid = fopen(my_filename,'r+','ieee-le','ISO-8859-1');
fwrite(fid,[1 2 3],'short',10,'ieee-le')
fclose(fid)

スキップされていない値のみを上書きします。


Linux
  1. ルートレスのPodmanコンテナの舞台裏ではどうなりますか?

  2. コマンドCat/proc / cpuinfoを実行するとどうなりますか?

  3. シェルでファイルを実行するとどうなりますか?

  1. Linux –宛先パスなしでRsyncするとどうなりますか?

  2. 指定したファイルが移動または削除された場合、Linux で開いているファイル ハンドルはどうなりますか

  3. ls -l の後の最初の行の合計は?

  1. スレッドが分岐するとどうなりますか?

  2. mv が中断されるとどうなりますか?

  3. /dev/zero から /dev/null への DD ...実際に何が起こるか