two curves on one figure with one kept updating

血红的双手。 提交于 2019-12-11 05:49:10

问题


I have following code which basically plot the original signal x on the figure, and updates the reconstructed signal rec iteratively.

plot(x); hold on

err = 100; tol = 0.1; err_vec = [];
while err > tol % iterations
    % Low-pass filter xpg
    REC = fft(rec);
    REC(M+2:N-M) = 0;
    rec = real(ifft(REC)); plot(rec, 'r*');  drawnow

    % Restore the known samples    %
    rec(ks) = y(ks);

    % Error
    err = norm(rec - x)
    err_vec = [err_vec err];
end

What I like is to retain x on the figure, and only update rec at each iteartion, such that I can see that rec is gradually approaching x.

However, with my current code, although x is retained, rec from each iteration simply overlaps on the figure, which is annoying. I'd like to show the rec from only current iteration.

How should I change my code to do that?


回答1:


Beside the suggestion proposed by @excaza, you can try:

  • call the plot function specifying the return value (the handle to the line plotted
  • plot the updated curve
  • call pause in order to "slow` the process
  • call delete to delete the last plotted curve

A possible implementation, based on two generic curves, could be:

t=0:.01:2*pi;
x=sin(t);
plot(t,x)
hold on
grid on
k=0:.1:1
for i=1:length(k)
   y=sin(t);
   hp=plot(t,y*k(i),'r')
   legend('Target Curve','Approximate curve')   
   pause(.3)
   delete(hp)
end



来源:https://stackoverflow.com/questions/49222150/two-curves-on-one-figure-with-one-kept-updating

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!