3

Matlab ワークスペースの一部のデータをバイナリ ファイルにパックし、後でそのデータをワークスペースに復元できるようにしたいと考えています。(データは、テレメトリ データ ログのヘッダーの一部を形成します。テレメトリを生成したデータをファイル内に直接含めると便利です。)

loadandコマンドがまさにこれを行うことは承知していsaveますが、私の状態は独特だと思います。ワークスペース データをファイルに保存すると、ファイルを開き、テレメトリ データをファイルに追加する (C で記述された) 別のプログラムが作成されます。私は考えずloadsaveこれを処理します。

Mathworks File Exchange にあるツールを使用してcstructデータを BLOB にパックし、fwrite. このアプローチの注意点は、cstructアンパック時にパッキング形式を認識している必要があることです。データの形式は変更されており、今後も変更される可能性があるため、この要件を削除することをお勧めします。

理想的には、バイト カウント X をファイル ヘッダーに書き込み、その後に MAT 形式のデータを含む (サイズ X の) バイナリ BLOB、その後にさまざまなサイズのテレメトリ データの BLOB を書き込みたいと考えています。データをアンパックしたい場合、X バイトのデータを読み取り、それを MAT ファイルとして解釈すると、魔法のようにワークスペースに表示されます。

ワークスペース変数をバイナリ BLOB にパックし、それらの構造を事前に知らなくてもアンパックする方法はありますが、バイナリ データはより大きなファイルの一部として保存されますか?

load編集:私が必要だとは思わず、save必要なものであるという明確化を追加しました。

4

1 に答える 1

3

Matlab の保存コマンドはまさにあなたが望むものです。変数を再度読み込むには、loadを使用します。

更新:これで、あなたが何をしようとしているのかわかりました。私の最善のアイデアは、 を使用して .mat ファイルを作成し、saveそのファイルをカスタム バイナリ ファイルに埋め込むことです (バイトをコピーするだけです)。Matlab データを復元するには、それらのバイトを抽出して新しい .mat ファイルを作成し、load. この方法は、最小限のバイナリ フォーマットを実行し、 Matlab データを処理できるため便利です。

おまけのヒント: 一時 .mat ファイルの適切な場所はtempdirです。

于 2013-02-20T01:56:56.643 に答える