一张图两条曲线一条不断更新

two curves on one figure with one kept updating

我有以下代码,基本上在图中绘制原始信号 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

我应该如何更改我的代码才能做到这一点?

除了@excaza提出的建议外,您还可以尝试:

  • 调用 plot 函数指定 return 值(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