0

特定の方法で、ワークスペース内のすべての変数を名前とともにファイルに保存したいと思います。

%<*firstVariableName>firstVariableValue(s)%</firstVariableName>
%<*secondVariableName>secondVariableValue(s)%</secondVariableName>

各変数を新しい行に保存したいと思います。関数 who を試してみましたが、うまく動作しないようです。

UTF-8 として保存するのにも問題があります。変更できる簡単なエンコード設定はありますか?

4

2 に答える 2

1

これはすべての場合に機能するとは限りませんが、数値入力ではうまく機能します。ユースケースに応じて適切に変更できます。

%Clears current workspace.
clear;

%Sample data.
a = 1;
b = [2 3];
new_var = [4;5];

%Relevant code.
my_var_list = who;
fid = fopen('my_var_list.txt','w');
for my_var_ii=1:numel(my_var_list)
    my_temp_var = eval(my_var_list{my_var_ii});
    my_temp_str = cellstr(strcat(sprintf('%%<*%s>', my_var_list{my_var_ii}), num2str(my_temp_var(:)'), sprintf('%%</%s>', my_var_list{my_var_ii})));
    fprintf(fid, '%s\n', my_temp_str{:});
end
fclose(fid);
clear fid;
clear my_temp_var;
clear my_var_ii;
clear my_var_list;
clear my_temp_str;

これで、「my_var_list.txt」には次が含まれます。

%<*a>1%</a>
%<*b>2  3%</b>
%<*new_var>4  5%</new_var>
于 2013-05-15T08:29:59.523 に答える
1

このwho関数は変数の名前を保存しますが、変数内のデータは保存しません。実際の変数を保存したい場合は、save関数を使用して *.mat ファイルに保存する必要があります。

特定の方法でフォーマットされた変数の名前のリストを取得しようとしている場合は、次のようにすることをお勧めします。

varlist = who(variables);

varlistセル配列です。その後、ファイルへの書き込みを開始し、fopenを使用してセル配列を反復処理し、完了したらそれを実行できます。ちなみに、反復するときは、文字列を返す(セルを返す)を使用する必要があります。fwritefclosevarlist{x}varlist(x)

お役に立てれば。:)

于 2013-05-15T04:50:35.943 に答える