MATLAB - более сложное добавление графика к другому графику после цикла

у меня есть проблема, и я надеюсь, что я найду помощь там. Это мой пример кода. Это только часть моего алгоритма. Чтобы представить, как движется точка, в уравнениях мне нужно показать контур функции с двумя переменными и в точках. Потому что у меня есть более сложная функция, чем параболическая функция, поэтому уравнения слишком длинные, чем мне нужно. По этой причине я перемещаю построение контура перед циклом. Но у меня проблема. Мне нужно всегда показывать счетчик и точки только для 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

person Pavel Koudela    schedule 10.12.2016    source источник


Ответы (1)


Вы должны сохранить дескриптор вашего графика scatter и просто обновить его свойства XData и YData вместо того, чтобы каждый раз уничтожать объекты графика.

[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
person Suever    schedule 10.12.2016