クエリの2つの部分があります 1)構造の異なるフィールドを別々のファイルとして保存する方法 2)中間ディレクトリが存在しない場合、保存コマンドを実行して保存パスにディレクトリを作成しますか?私は別の.MATファイルとして構造体データの各フィールドを保存したい構造体の複数のフィールドを別々のマットファイルとして保存し、ディレクトリが存在しないディレクトリを作成する
data.a.name='a';
data.a.age=5;
data.b.name='b';
data.b.age=6;
data.c.name='c';
data.c.age=7;
fields=fieldnames(data);
for i=1:length(fields)
save(['E:\data\' fields{i} '.mat'],'-struct','data');
end
:最初の部分については
。ループを実行した後、私はE:\ dataの内部に3つのファイルがあるはずです。 a.mat、b.mat、c.matを含み、a.matはフィールド 'a'のデータのみを含み、b.matはフィールド 'b'のデータのみを含み、以下同様である。
上記のコードを実行すると、私のディレクトリに3つのファイルがありますが、各ファイルには個々の変数ではなく、3つの変数a、b、cの内容がすべて同じです。
コマンドが動作しない、次のとおりです。
for i=1:length(fields)
save(['E:\data\' fields{i} '.mat'],'-struct',['data.' fields{i} ]);
end
Error using save
The argument to -STRUCT must be the name of a scalar structure variable.
使用する各フィールドを保存するための一時的なvaiablesを作成しなくても、私の目的を達成するためのコマンドを保存するいくつかの方法がありますか?第二の部分については
:
私は、ディレクトリ構造に格納する必要があるファイルの数が多いです。私は仕事に従うことを望む。
test='abcdefgh';
save(['E:\data\' test(1:2) '\' test(3:4) '\' test(5:6) '\result.mat'])
しかし、任意の中間ディレクトリならば、それは次のようなエラーに
Error using save
Cannot create 'result.mat' because 'E:\data\ab\cd\ef' does not exist.
を示したが、その後、彼らはsaveコマンドによって作成されなければならない、存在しません。ディレクトリが存在するかどうかを確認して存在コマンドを使用して確認し、mkdirを使用してディレクトリを作成することで、この部分を動作させることができます。私は気づいていないいくつかの議論を使用して作業を行うようにセーブコマンドを強制するいくつかの方法があるかどうか疑問に思っています。
2つの全く関係のない質問がある場合は、2つの質問をしてください。 – excaza