UNIX Matlab - Рассчитать график в цикле, но показать в конце - PullRequest
0 голосов
/ 03 декабря 2018

Я строю графики стволов на заданных фигурах внутри функции, используя следующий код ...

% plot - phase = 1,2 or 3, with different data each time
% Each phase is called more than once
figure(phase);
stem(1:length(phaseSystem),phaseFailureTimes);hold on

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

1 Ответ

0 голосов
/ 04 декабря 2018

Я думаю, что вам нужно немного реорганизовать, чтобы ваша функция выводила 3 ​​значения для ваших переменных phaseSystem и phaseFailureTimes как n на 3 матрицы.

Позвольте мне вызвать эту функцию calculate_phase_failure.Тогда скрипт / функция, которая вызывает calculate_phase_failure, может накапливать результаты.Наконец, отдельный цикл в конце может генерировать ваши графики.Если количество элементов отличается для каждой итерации ваших циклов, вам может потребоваться использовать массив ячеек для накопления ваших результатов.

Вот пример для простейшего случая, когда количество элементов согласовано между итерациямииз ваших петель.

for i=1:n
     [phaseSystem(:,:,i), phaseFailureTime(:,:,i)] = calculate_phase_failure( <input variables> ); 
end

% now generate your plot
for i=1:n
     for phase=1:size(phaseFailureTime,2)
           figure(phase);
           stem(1:size(phaseSystem,1), phaseFailureTime(:,phase,i))
     end
end
...