オートエンコーダーの​学習に関するプロット​の値の取得

2 vues (au cours des 30 derniers jours)
Kenta
Kenta le 21 Fév 2019
Commenté : Kenta le 21 Fév 2019
XTrain = digitTrainCellArrayData;
hiddenSize = 25;
autoenc = trainAutoencoder(XTrain,hiddenSize,...
'L2WeightRegularization',0.004,...
'SparsityRegularization',4,...
'SparsityProportion',0.15);
スパース自己符号化器を使用した手書きの数字イメージの再構成に関するものです。
このコードを実行し、表示されるウィンドウのperformanceボタンを押すと、添付画像にあるとおり、学習に関するプロットを得ることができます。
そこで質問なのですが、このプロットの値(XとYの値)を取得することは可能でしょうか。
資料作成のため、この値をExcelにインポートし、こちらの望む形のフォーマットにて、同様の図を作成したいと考えています。
もし、ご存知のかたがいらっしゃれば教えていただけないでしょうか。よろしくお願いいたします。

Réponse acceptée

Takumi
Takumi le 21 Fév 2019
Modifié(e) : Takumi le 21 Fév 2019
figureから元のデータを取得する方法は以下のリンクが参考になるかと思います.
またExcelに出力する方法としては例えばxlswrite関数を用いる方法があります.
次に示す例は,まずsinおよびcos関数をプロットしたのち,変数を削除することで質問の状態を再現し,図から元データを抽出してExcelファイルの各シートに出力するものです.
’学習に関するプロット’ に適用する場合は元データを得たいグラフを出力した後に  ’% グラフィックハンドル取得' と書かれた行以降を実行していただければ良いかと思います.
clear all
close all
% サンプル
x1 = linspace(0,2*pi,100);
x2 = linspace(0,2*pi,50);
y1 = sin(x1);
y2 = cos(x2);
plot(x1,y1,'DisplayName','sin(x)')
hold on
plot(x2,y2)
clear % 変数削除
% グラフィックハンドル取得
h = findobj(gca,'type','line'); % カレント軸のラインオブジェクト
x = get(h,'XData'); %'XData'プロパティ値の取得
y = get(h,'YData'); %'YData'プロパティ値の取得
% ラインオブジェクトが複数の時はcell配列,単数の時は数値配列となるので
% 数値配列のときはcell配列に変換
if isnumeric(x)
X{1} = x;
Y{1} = y;
else
X = x;
Y = y;
end
filename = 'test.xlsx';
for i = 1:length(X)
data = [X{i};Y{i}]';
sheat = get(h(i),'DisplayName');
if isempty(sheat)
sheat = sprintf('line%u',i);
end
xlswrite(filename,data,sheat);
end
  1 commentaire
Kenta
Kenta le 21 Fév 2019
回答いただきありがとうございます。
丁寧にコードも示していただき、誠にありがとうございました。
無事、求めるデータをエクセルファイルに保存することができました。
グラフィックハンドルの取得方法や、エクセルのシートを分けての保存などを知ることができ、非常に勉強になりました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur グラフィックス オブジェクトのプログラミング dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!