一个图上的两条曲线,其中一条保持更新

时间:2018-03-11 16:14:57

标签: matlab plot matlab-figure

我有以下代码,它基本上绘制了图上的原始信号x,并迭代地更新重建信号rec

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

我喜欢在图上保留x,并且只在每次重复时更新rec,以便我可以看到rec正逐渐接近x

但是,使用我当前的代码,虽然保留了x,但每次迭代的rec只是重叠在图上,这很烦人。我想仅从当前的迭代中显示rec

我应该如何更改代码呢?

1 个答案:

答案 0 :(得分:1)

除了@excaza提出的建议,你可以试试:

  • 调用plot函数指定返回值(handle到绘制的行
  • 绘制更新的曲线
  • 致电pause以“减慢”流程
  • 致电delete以删除最后绘制的曲线

基于两条通用曲线的可能实现可能是:

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

enter image description here