В этом примере показано, как обнаружить резкие изменения в поведении системы с помощью методов оперативной оценки и автоматической сегментации данных. В этом примере используются функциональные возможности Toolbox™ идентификации системы и не требуется Toolbox™ предиктивного обслуживания.
Рассмотрим линейную систему, задержка переноса которой изменяется от двух до одной секунды. Задержка передачи - это время, затрачиваемое входным сигналом на измеряемый выходной сигнал. В этом примере изменение задержки переноса обнаруживается с помощью методов оперативной оценки и сегментации данных. Данные ввода-вывода, измеренные из системы, доступны в файле данных. pdmAbruptChangesData.mat.
Загрузите и постройте график данных.
load pdmAbruptChangesData.mat z = iddata(z(:,1),z(:,2)); plot(z) grid on

Смена транспортной задержки происходит около 20 секунд, но её нелегко увидеть на сюжете.
Моделирование системы с использованием структуры ARX A полиномиальный коэффициент, два B полиномиальные коэффициенты и одна задержка.
b2u (t-2)
Здесь, A = [1 a] и B = [0 b1 b2].
Ведущий коэффициент B полином равен нулю, поскольку модель не имеет сквозного соединения. По мере изменения динамики системы значения трех коэффициентов a, b1, и b2 изменение. Когда b1 близок к нулю, эффективная задержка транспортировки составит 2 выборки, потому что B полином имеет 2 ведущих нуля. Когда b1 больше, эффективная задержка транспортировки составит 1 выборку.
Таким образом, для обнаружения изменений в задержке переноса можно отслеживать изменения в B полиномиальные коэффициенты.
Алгоритмы оперативной оценки обновляют параметры модели и оценки состояния рекурсивным образом, когда становятся доступными новые данные. Интерактивную оценку можно выполнить с помощью блоков Simulink из библиотеки инструментов идентификации системы или в командной строке с помощью процедур рекурсивной идентификации, таких как recursiveARX. Онлайновая оценка может использоваться для моделирования изменяющейся во времени динамики, такой как старение оборудования и изменение погодных условий, или для обнаружения неисправностей в электромеханических системах.
По мере обновления оценщиком параметров модели изменение динамики системы (задержка) будет обозначаться большим, чем обычно, изменением значений параметров. b1 и b2. Изменения в B полиномиальные коэффициенты будут отслеживаться вычислением:
(t-1))
Используйте recursiveARX объект для оперативной оценки параметров модели ARX.
na = 1; nb = 2; nk = 1; Estimator = recursiveARX([na nb nk]);
Укажите алгоритм рекурсивной оценки как NormalizedGradient и коэффициент адаптации 0,9.
Estimator.EstimationMethod = 'NormalizedGradient';
Estimator.AdaptationGain = .9;Извлеките необработанные данные из iddata объект, z.
Output = z.OutputData; Input = z.InputData; t = z.SamplingInstants; N = length(t);
Анимированные линии используются для печати расчетных значений параметров и L. Инициализируйте эти анимированные строки перед оценкой. Чтобы смоделировать потоковые данные, подайте данные в блок оценки по одной выборке за раз. Инициализируйте параметры модели перед оценкой, а затем выполните оценку в оперативном режиме.
%% Initialize plot Colors = {'r','g','b'}; ax = gca; cla(ax) for k = 3:-1:1 h(k) = animatedline('Color',Colors{k}); % lines for a, b1 and b2 parameters end h(4) = animatedline('Marker','.','Color',[0 0 0]); % line for L legend({'a','b1','b2','Deviation'},'location','southeast') title('ARX Recursive Parameter Estimation') xlabel('Time (seconds)') ylabel('Parameter value') ax.XLim = [t(1),t(end)]; ax.YLim = [-2, 2]; grid on box on %% Now perform recursive estimation and show results n0 = 6; L = NaN(N,nk); B_old = NaN(1,3); for ct = 1:N [A,B] = step(Estimator,Output(ct),Input(ct)); if ct>n0 L(ct) = norm(B-B_old); B_old = B; end addpoints(h(1),t(ct),A(2)) addpoints(h(2),t(ct),B(2)) addpoints(h(3),t(ct),B(3)) addpoints(h(4),t(ct),L(ct)) pause(0.1) end

Первое n0 = 6 выборок данных не используются для вычисления детектора изменений, L. В течение этого интервала изменения параметров являются большими из-за неизвестных начальных условий.
Найти расположение всех пиков в L с помощью findpeaks из панели инструментов обработки сигналов.
[v,Loc] = findpeaks(L); [~,I] = max(v); line(t(Loc(I)),L(Loc(I)),'parent',ax,'Marker','o','MarkerEdgeColor','r',... 'MarkerFaceColor','y','MarkerSize',12)

fprintf('Change in system delay detected at sample number %d.\n',Loc(I));Change in system delay detected at sample number 21.
Расположение наибольшего пика соответствует наибольшему изменению в B полиномиальные коэффициенты и, таким образом, является местом изменения задержки передачи.
В то время как интерактивные методы оценки предоставляют больше возможностей для выбора методов оценки и структуры модели, метод сегментации данных может помочь автоматизировать обнаружение резких и изолированных изменений.
Алгоритм сегментации данных автоматически сегментирует данные на области различного динамического поведения. Это полезно для фиксации резких изменений, возникающих в результате отказа или изменения рабочих условий. segment команда облегчает эту операцию для данных с одним выходом. segment является альтернативой методам оценки в режиме онлайн, когда не требуется фиксировать изменяющееся во времени поведение во время работы системы.
Приложения сегментации данных включают сегментацию речевых сигналов (каждый сегмент соответствует фонеме), обнаружение отказов (сегменты соответствуют работе с отказами и без них) и оценку различных режимов работы системы.
Входные данные для segment команда включает в себя измеренные данные, порядки моделей и предположение для дисперсии, r2, шума, который влияет на систему. Если отклонение полностью неизвестно, его можно оценить автоматически. Выполнение сегментации данных с использованием модели ARX с теми же заказами, что и для оперативной оценки. Установите отклонение равным 0,1.
[seg,V,tvmod] = segment(z,[na nb nk],0.1);
Метод сегментации основан на AFMM (адаптивное забывание через несколько моделей). Подробнее о методе см. Андерссон, Int. Дж. Контроль Ноя 1985.
Для отслеживания изменяющейся во времени системы используется многомодельный подход. Результирующая модель отслеживания является средним из нескольких моделей и возвращается в качестве третьего выходного аргумента segment, tvmod.
Постройте график параметров модели отслеживания.
plot(tvmod)
legend({'a','b_1','b_2'},'Location','best')
xlabel('Samples'), ylabel('Parameter value')
title('Time-varying estimates')
Обратите внимание на сходство между этими траекториями параметров и траекториями, оцененными с помощью recursiveARX.
segment определяет моменты времени, в которые произошли изменения, с помощью tvmod и qвероятность того, что модель демонстрирует резкие изменения. Эти моменты времени используются для построения сегментированной модели с использованием процедуры сглаживания над моделью отслеживания.
Значения параметров сегментированной модели возвращаются в seg, первый выходной аргумент segment. Значения в каждой последовательной строке являются значениями параметров базовой сегментированной модели в соответствующие моменты времени. Эти значения остаются постоянными в последовательных строках и изменяются только тогда, когда определяется, что динамика системы изменилась. Таким образом, значения в seg являются кусочно постоянными.
Постройте график расчетных значений параметров a, b1, и b2.
plot(seg) title('Parameter value segments') legend({'a','b1','b2'},'Location','best') xlabel('Time (seconds)') ylabel('Parameter value')

Изменение наблюдается в значениях параметров вокруг образца 19. Значение b1 изменяется с малого (близкого к нулю) на большое (близкое к 1) значение. Значение b2 показывает противоположный шаблон. Это изменение значений B параметры указывают на изменение задержки передачи.
Второй выходной аргумент segment, V, - функция потерь для сегментированной модели (т.е. предполагаемая дисперсия ошибки прогнозирования для сегментированной модели). Вы можете использовать V для оценки качества сегментированной модели.
Обратите внимание, что двумя наиболее важными входами для алгоритма сегментации являются r2 и q, четвертый входной аргумент для segment. В этом примере: q не было указано, так как значение по умолчанию, 0,01, было достаточным. Меньшее значение r2 и большее значение q приведет к увеличению количества точек сегментации. Чтобы найти соответствующие значения, можно изменить r2 и q и использовать те, которые работают лучше всего. Как правило, алгоритм сегментации более чувствителен к r2 чем q.
Было оценено использование методов онлайн-оценки и сегментации данных для обнаружения резких изменений в динамике системы. Онлайновые методы оценки обеспечивают большую гибкость и больший контроль над процессом оценки. Однако для изменений, которые происходят редко или резко, segment обеспечение способа автоматического обнаружения на основе сглаживания изменяющихся во времени оценок параметров.