Как я могу указать, на какой фигуре должен идти сюжет? - программирование
Подтвердить что ты не робот

Как я могу указать, на какой фигуре должен идти сюжет?

Я открываю несколько фигур, и я хочу обновлять их независимо во время выполнения. Следующий пример игрушки должен прояснить мое намерение:

clf;

figure('name', 'a and b'); % a and b should be plotted to this window
hold on;
ylim([-100, 100]);

figure('name', 'c'); % only c should be plotted to this window

a = 0;
b = [];
for i = 1:100
    a = a + 1;
    b = [b, -i];
    c = b;
    xlim([0, i]);
    plot(i, a, 'o');
    plot(i, b(i), '.r');
    drawnow;
end

Проблема заключается в том, что когда я открываю второй figure, я не могу сказать, что функции plot будут отображать первый, а не второй (и только c должен быть нанесен на второй).

4b9b3361

Ответ 1

Вы можете использовать что-то вроде

figure(1)
plot(x,y) % this will go on figure 1

figure(2)
plot(z,w) % this will go on another figure

Команда также установит фигуру видимой и поверх всего.

Вы можете переключаться между цифрами по необходимости, выдавая ту же команду figure. В качестве альтернативы вы также можете использовать ручку на рисунке:

h=figure(...)

а затем введите figure(h) вместо использования числовых индексов. С помощью этого синтаксиса вы также можете предотвратить появление фигуры сверху с помощью

set(0,'CurrentFigure',h)

Ответ 2

вы можете указать axes-object в команде plot, см. здесь: http://www.mathworks.de/help/techdoc/ref/plot.html

Итак, откройте фигуру, вставьте оси и сохраните идентификатор объекта осей и запишите в него:

figure
hAx1 = axes;
plot(hAx1, 1, 1, '*r')
hold on

figure
hAx2 = axes;
plot(hAx2, 2, 1, '*r')
hold on


plot(hAx2, 3, 4, '*b')
plot(hAx1, 3, 3, '*b')

альтернативно вы можете использовать gca вместо создания объекта axes самостоятельно (потому что он автоматически создается в фактической фигуре, когда он не существует!)

figure
plot(1,1)
hAx1 = gca;
hold on

figure
plot(2,2)

plot(hAx1, 3, 3)

EDIT:

enter image description here (из http://www.mathworks.de/help/techdoc/learn_matlab/f3-15974.html)