3

非常に複雑な関数セットをデバッグするために、サブ関数をワークスペースから分離して別のテストを行いたいと考えています。したがって、関数ワークスペースから値を選択して、あらかじめ定義しておく必要があります。特定の位置にブレークポイントを設定することで、変数のようにコンソールに値を表示して現在のワークスペースを「調べる」ことができますHF33

HF33 =

     1.0777    0.0865    0.0955
    -0.1891    0.8110   -0.1889
     0.0935    0.0846    1.0755

この結果を別の場所 (たとえば、新しいスクリプトの先頭) に貼り付けることができる新しい Matlab 式に変換できる関数/スクリプトはありますか?

HF33 = [ 1.0777,  0.0865,  0.0955;
        -0.1891,  0.8110, -0.1889;
         0.0935,  0.0846,  1.0755 ];

これにより、指定された値を簡単に変更してサブ関数とその動作をテストし、巨大なデバッグ ワークスペースを実行しなくても何が起こっているかを確認できました。

のような簡単な機能はありres2exp(HF33)ますか?

4

5 に答える 5

3

最初:この関数を作成して変数名を取得します

function out = varname(var)
out = inputname(1);
end

コンソールに直接印刷できます:

fprintf('%s =%s\n',varname(varToSave),mat2str(varToSave));

または fopen と fprint を使用してファイルに書き込みます

fop = fopen('filename','w');
fprint(fop,'%s = %s' ,varname(varToSave),mat2str(varToSave));
fclose(fop);

私はこれがあなたを助けると思います

于 2013-10-25T07:53:34.753 に答える
2

私は今これを作りました。それは美しくフォーマットされていませんが、あなたがやろうとしていることを達成します-私があなたを正しく理解していれば。

a = [ 2 3 4 5
4 5 5 6
3 4 5 6];


fprintf('\nb = [\n\n');
disp(a); 
fprintf(']\n\n');

これをコピーして貼り付けて、希望どおりに動作するかどうかを確認してください。これも非常に単純なコードなので、スペースや改行文字が必要な場所にない場合は変更できます。

必要に応じて、これから小さな関数を作成することもできます。

もし私にそれを機能させたいなら、私に知らせてください... 私は明日それをすることができます. しかし、あなたはおそらくそれを理解することができます.

ええと、関数を作ったところです。それほど時間はかかりませんでした。

function reprint_matrix(matrix)

    var_name = inputname(1);

    fprintf('\n%s = [\n\n', var_name);
    disp(matrix); 
    fprintf(']\n\n');

end
于 2013-10-25T08:14:30.273 に答える
2

mat2str()それはあなたが探しているような機能かもしれませんが、あなたが求めている正確なプリントアウトを提供しません. 使用方法の例を次に示します。

>> A = magic(4)

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> B = mat2str(A)

B =

[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1]

そして、出力を完全にコピー/貼り付けできるようにしたい場合は、次を使用できます。

disp(['C = ',mat2str(A)])
C = [16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1]
于 2013-10-25T08:20:18.487 に答える
1

あなたが何を探しているのかわかりませんが、これが役立つと思います:

http://www.mathworks.com/matlabcentral/fileexchange/24447-generate-m-file-code-for-any-matlab-variable/content/examples/html/gencode_example.html

データの転送にマットファイルを使用しているため、使用しませんでした。

クリップボード機能と組み合わせることができます:

clipboard('copy',gencode(ans))

于 2013-10-25T08:01:09.353 に答える