2017-05-25 18 views
0

同時に動的な背景上で線をアニメーション化しようとしていますが、同じプロットで両方を更新できないという問題があります。背景をアニメートすると、線は表示されません。 質問はなぜですか?私は成功なしに別のポジションで試していました。Matlabは同じ図形で背景と線をアニメーション化します

あなたがimagescの一部を削除した場合、そこには問題はありませんし、ラインのアニメーションが

固定
for k = 1:numel(t) 
    decay = rand; 
    res = decay * background; 
    imagesc(x,y,flip(res)); 
    hold on 
    clearpoints(h); 
    clearpoints(p); 

    addpoints(p,[l,(cosO(k)],[0,cosO(k)]); 
    addpoints(h,[r,(senO(k)],[0,senO(k)]); 

    drawnow 
    hold off 
end 

を流し!ハンドラを作成し、ループの内側のCDataを変更します。

imh = imagesc(x,y,flip(res)); 
for ... 
    imh.CData = flip(res); 

end 
+1

使用 '**前** imagesc''への呼び出しをon'の保留、または 'でoff'開催省略します'i = 1'の場合は' imh = imagesc(...) 'を使い、' i> 1'の場合は 'imh.CData = flip(res)'を使います。 – user2999345

+0

ありがとうございます、ハンドラを作成し、それを行うCDataを変更するが、オン/オフ戦略doesnt仕事を保持する! –

+0

@ user2999345コメントを回答に変換してください、またはOPがそれを行う可能性があります。 – m7913d

答えて

0

imagescへの呼び出しは、あなたのプロットをオーバーラン。あなただけ('CData'プロパティとして)imagescで表現された画像行列を変更することによってこれを克服することができます

for k = 1:numel(t) 
    decay = rand; 
    res = decay * background; 
    if k == 1 
     imh = imagesc(x,y,flip(res)); 
    else 
     imh.CData = flip(res); 
     % or: set(imh, 'CData', flip(res)); % in older MATLAB versions 
    ... 
end 
関連する問題