2016-12-10 12 views
1

У меня проблема, и я надеюсь, что я найду там помощь. Это мой примерный код. Его единственная часть моего алгоритма. Представьте себе, как движется точка, во время уравнений мне нужно показать контур функции с двумя переменными и в точки. У меня есть более сложная функция, чем параболическая функция, поэтому уравнения слишком велики, чем мне нужно. По этой причине я перемещаю контурный график перед циклом. Но у меня проблема. Мне нужно всегда показывать countour и указывать только на i-loop, и мое решение не работает. Пожалуйста, помогите мне!MATLAB - добавление графика в другой график после цикла, более сложный

[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 

ответ

0

Вы должны хранить ручку на свой 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 
+0

Спасибо, это работает :) Хороший день –