2016-05-06 8 views
0

現在、Matlabのimshowを使用して、拡散フィルタ処理の繰り返しごと、つまり1秒に何回も画像を出力しています。 フィルタリング中に特定の画像部分を詳しく見たい場合があります。 しかし、imshowに( '親'、ハンドル)名前と値のペアを使用すると、倍率と位置がリセットされます。Matlabは古い位置と倍率で画像を更新します

基本的な画像を更新する方法はありますが、拡大率と位置はそのままですか?

答えて

1

現在の軸のcdataを新しいデータマトリックスに更新することができます。これにより、他のすべての設定が同じに保たれます。これがループしている場合は、おそらくdrawnowに電話する必要があります。例:

x=randn(100); 
figure;imagesc(x); 

ここで、任意の操作をズーム/パン/実行します。

f=gca; 
x=randn(100); 
f.Children.CData = x; 

子データの更新のこの方法は、(ソースを覚えていないことができ、それがヘルプファイルの一つであった)軸の子Imageを破壊し、各フレームを再作成するよりも効率的とMATLABが推奨されています。

編集:ちょうどこの構文は古いバージョンのmatlab(2015年以前)では動作しないことを思い出しました。その場合は、get/set構文を使用してください:

set(get(gca,'Children'),'CData',x); 
+0

ありがとうございました! 私はちょうど前にハンドルの構造に気付かなかった。 –

+0

それはあなたのためにうれしいです。 –

+1

@ Kapt.Brackbier:最初は混乱するかもしれません。しかし、ドキュメントを読むのではなく、私を最も助けてくれたのは、ハンドルの種類(axes-handle、figure-handle)に常に 'get'を使い、構造を詳しく調べることです。利用可能なプロパティ、それらのいくつかはおそらく考えていないだろう。例: 'f = figure;プロット(...); get(f); 'または' figure;プロット(...); hAx = gca; get(hAx); 'ちょっと見て学びましょう:-) – tim

関連する問題