MATLAB - 在循环后将绘图添加到另一个绘图,更复杂

MATLAB - adding plot to another plot after loop, more sophisticatedly

我有一个问题,我希望能在那里找到帮助。 这是我的示例代码。它只是我算法的一部分。想象一下,点是如何移动的,在方程式中,我需要显示具有两个变量的函数轮廓并进入点。因为我有比抛物线函数更难的函数,所以方程式比我需要的要长。出于这个原因,我在循环之前移动了轮廓图。但我有问题。我需要始终显示 countour 并仅针对 i-loop 点,但我的解决方案不起作用。请帮助我!

[R S] = meshgrid(-5:0.1:5, -5:0.1:5);

figure
contour(R, S, R.^2 + S.^2, 5);
axis([-5,5,-5,5])
axis square
hold on

for i=1:50
    a = 0;
    b = 1:2
    B = repmat(b,5,1)
    A = unifrnd(a,B)
    x = A(1:5,1);
    y = A(1:5,2);

    scatter(x,y,'fill')
    hold off
    pause(0.5)
end

您应该存储 scatter 图的句柄并简单地更新它的 XDataYData 属性,而不是每次都销毁图对象

[R S] = meshgrid(-5:0.1:5, -5:0.1:5);

figure
contour(R, S, R.^2 + S.^2, 5);
axis([-5,5,-5,5])
axis square
hold on

% Create a scatter plot and store the graphics handle so we can update later
hscatter = scatter(NaN, NaN, 'fill');

for i=1:50
    a = 0;
    b = 1:2
    B = repmat(b,5,1)
    A = unifrnd(a,B)
    x = A(1:5,1);
    y = A(1:5,2);

    % Update the X and Y positions of the scatter plot
    set(hscatter, 'XData', x, 'YData', y);

    pause(0.5)
end