19

R2014b で MATLAB の Figure エンジンが変更されたため、より見栄えの良い Figure を取得するためにコードの一部を再実行することにしました。残念ながら、私が持っている最後のコードは実行に時間がかかるコードであり、より良い図のためにコードを再実行することは非常に避けたい.

.figR2013b で結果をファイルに保存しました。ただし、R2014b で開くと、古い形式のままです。

MATLAB R2014b プロット エンジンを使用して Figure を再描画することは可能ですか? もしそうなら、どうすればできますか?

注:文字通り、Figure は新しいエンジンで開かれ、描画されますが、古い形式のままです。コマンドを使用して新しい図を作成すると、title()大きな太字のタイトルが表示されますが、この図を「 Drawow 」を使用して再描画したり、コードを生成したりしても、形式は変わりません。

例:この図は 2013b に作成され、2014b に再作成されました。title('whatever')タイトルが、新しいグラフィック ハンドルでのプロットと同じ形式でプロットされないことがわかります。「.fig」は、生成されたバージョンのデフォルト値を保存して設定するようです。したがって、再描画すると、プロットの色、タイトル、ラベルなどは古いグラフィック ハンドルのように見えます。

ここに画像の説明を入力

これは、次のコードでテストできます。これは非常に単純化された問題であることに注意してください。質問はタイトルやラベルについて明示的にではなく、一般的なすべてのグラフィックに関するものです。

rng(1)


figure()
x = 1:50;
y = rand(1, 50);

plot(x,y)
title('this NICE Title')
xlabel('labels!')
ylabel('some other labels','Interpreter','Latex')

このコードが 2013b と 2014b で実行され、両方で fig として保存され、両方で fig として開かれた場合、次の 2 つの図が表示されます。

ここに画像の説明を入力 ここに画像の説明を入力

2013b の図ファイル: http://s000.tinyupload.com/index.php?file_id=02053933004513599550

4

1 に答える 1

6

これを行うための回り道があります - を使用hgopenして図をロードし、データを抽出して 2014b で再プロットします。

h1=hgopen('test.fig');              % h1 = handle to the figure
allaxes=get(h1,'children');         % allaxes = array with axes handles 
for a=1:length(allaxes)
    ax=allaxes(a);
    allines=get(ax,'children');     % all lines in current axes
    for l=1:length(allines)
        lin=allines(l);
        values=get(lin,'ydata');    % values of the current line
        subplots{a}{l}=values;
    end
end

次に、subplotsセル配列を使用して手動でプロットを再度作成できます。これは退屈な方法ですが、出力の再生成に非常に時間がかかる場合は、試してみる価値があります。

于 2015-10-20T08:30:55.533 に答える