一张图两条曲线一条不断更新
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
我有以下代码,基本上在图中绘制原始信号 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