1

load()ステートメントでワークスペースに読み込まれる既存の構造体配列があります。フィールドには と が含まれcharますdouble

代わりに、フィールドの内容を含むこの構造をスクリプトで作成したいのですが、構造が大きいため、すべてのフィールドと値を手動で書き出すことはしたくありません。

構造体フィールドをワークスペースからエディターにドラッグすると、フィールド名がコピーされるだけです。

フィールドとその値を抽出する簡単で便利な方法はありますか?構造配列のフィールドが

example_struct

フォームのステートメントに変換されます

example_struct.field1 = <some_value>;

スクリプトを書く必要がないのはどれですか?

編集:新しい構造配列に実際の値を設定するスクリプト (M ファイル) を書きたいと思います。でロードした既存の構造から、値を含むそのスクリプトのステートメントを取得したいのですがload()、タスクを実行するためにスクリプトを作成せずに (たとえば、fprintf ステートメントを使用して) 実行できるかどうかを知りたいです。 .

4

1 に答える 1

3

私の理解が正しければ、構造体を .mat ファイルではなく、Matlab スクリプト ファイルにダンプする必要があります。数行の Matlab で次のようなことができます。

fId = fopen('outputfile.m');
names = fieldnames(example_struct);
for i = 1 : length(names)
  fprintf(fId, 'example_struct.%s = %d;\n', names{i}, example_struct.(names{i}) );
end
fclose(fId);

この関数は、構造体のフィールド名のセル配列を返します。これには、表記法fieldnamesを使用してアクセスできます。example_struct.('name')すべてのフィールドが数値であるなど、いくつかの基本的な仮定を行っていることに注意してください。あなたのニーズに合わせてこれを拡張することはあなたに任せます!

于 2013-07-31T11:26:08.053 に答える