MATLAB: проблема с вызовом функции (из цикла), которая создает фигуру с графиками - PullRequest
0 голосов
/ 04 марта 2019

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

Вот графическая часть кода:

if ~isempty(failure_x)
    figure(call_n)
    sgt = sgtitle(filename);
    sgt.FontSize = 10;

    subplot(5,1,1)
    scatter([1: length(max_vol)], max_vol, '.')
    set(subplot(5,1,1), 'XLim', [1, length(max_vol)])

    subplot(5,1,2)
    scatter([1:length(flow)], flow, '.')
    set(subplot(5,1,2), 'XLim', [1, length(max_vol)])

    subplot(5,1,3)
    scatter([1: length(hlfv)], hlfv, '.')
    set(subplot(5,1,3), 'XLim', [1, length(max_vol)])

    subplot(5,1,4)
    scatter([1: length(stats)], stats(:,2), '.')
    set(subplot(5,1,4), 'XLim', [1, length(max_vol)])

    subplot(5,1,5)
    scatter(failure_x, failure_y)
    set(subplot(5,1,5), 'XLim', [1, length(max_vol)])
end

Когда я вызываю эту функцию отдельно из командной строки, все отображается правильно, но когда я вызываю ее из цикла for,последний подзаголовок всегда представляется первым подзаговором из рисунка при следующем вызове функции из цикла for.В основном, на итерации 1, подплот (5,1,5) показывает данные из подполя итерации 2 (5,1,1).

Я добавил параметр "call_n", чтобы у фигур увеличивались числа фигур, передаваемые из цикла for, но это, похоже, не решило проблему.

Есть идеи?Я обычно пишу на python, поэтому уверен, что делаю глупости.

РЕДАКТИРОВАТЬ: Вот цикл, который вызывает функцию "detect_hlfv"

for i = 1:length(fnames)
    fname = strcat(data_dir, fnames(i).name);
    failures = detect_hlfv(fname, i);
    if length(failures) > 0
        disp("FAILURE!")
        disp(fname);
    end
end

1 Ответ

0 голосов
/ 05 марта 2019

Я идиот!Я забыл закомментировать строку кода отладки, которая отображает переменную после ее создания.Проблема решена, спасибо за помощь!

...