Этот пример показывает, как выполнить онлайновую оценку параметра для подбора кривой строки с помощью рекурсивных алгоритмов оценки в командной строке MATLAB. Вы получаете изменяющееся во времени поведение ввода - вывода гидравлического клапана передачи с плавкой регулировкой.
Система является передачей с плавкой регулировкой (CVT), управляемой гидравлическим клапаном, вдохновленным ссылкой [1]. Давление клапана соединяется с CVT, который позволяет ему изменять свое отношение скорости и передавать крутящий момент с механизма на колеса. Поведение ввода - вывода клапана может быть аппроксимировано:
Здесь, t является текущим временем, y (t) является давлением клапана в панели, u (t) является безразмерным входом в области значений [0, 1]. Условие мертвая зона клапана.
Наклон, k (t), и смещение, b (t), зависит от системной температуры. Они отличаются, когда система нагревается от холодного запуска до типичной рабочей температуры. Вы хотите оценить k (t) и b (t) на основе шумных измерений u (t) и y (t).
Истинный наклон и параметры смещения являются k (0) =70 и b (0) =-15 во время t=0s. В t=50s запускается механизм. Параметры отличаются в зависимости от времени, пока они не достигают k (950) =50 и b (950) =-13 в t=950s. Шаг расчета является Ts=0.1s.
Содержимое входного сигнала u очень важно для оценки параметра. Рассмотрите случай, где u, и следовательно y, является постоянным. Затем существует бесконечно много k и b значения, которые удовлетворяют, y = k u + b. u (t) должен быть постоянно захватывающим система для успешной оценки k (t) и b (t). В этом примере, вход u:
нуль от t=0s до t=50s.
имеет ступенчатые изменения к 0,40, 0.45, 0.50, 0.55, 0.60, 0.55, 0.50, 0.45, 0,40 каждых 100 с, от t=50s до t=950s.
Гауссова случайная переменная с нулевым средним значением, 0,02 стандартных отклонения были добавлены на каждом временном шаге от t=50s до t=950s, чтобы обеспечить дополнительное возбуждение системной динамики в идентификационных целях.
Вывод сгенерирован с вышеупомянутыми истинными значениями k (t), b (t) наряду с входным сигналом u (t), с помощью y (t) = k (t) u (t) + b (t) + e (t). e (t), шум измерения, является Гауссовой случайной переменной с нулевым средним и стандартным отклонением 0.05.
load LineFittingRLSExample u y k b t; figure(); subplot(2,1,1); plot(t,u); ylabel('Input signal, u, [unitless]'); subplot(2,1,2); plot(t,y); ylabel('Valve pressure, y, [bar]'); xlabel('Time [s]');
Запишите модель ввода - вывода клапана, использующую векторное обозначение:
где регрессоры и параметры должны быть оценены. e (t) является неизвестным шумом. Вы используете recursiveLS команду оценки, чтобы создать Системный объект для онлайновой оценки параметра. Вы затем используете команду шага, чтобы обновить оценки параметра, x (t), в каждый такт на основе H (t) и y (t).
Вы задаете следующие свойства recursiveLS System Object:
Количество параметров: 2.
EstimationMethod: 'ForgettingFactor' (значение по умолчанию). Этот метод имеет только один скалярный параметр, ForgettingFactor, который запрашивает ограниченную предшествующую информацию относительно значений параметров.
ForgettingFactor: 0.95. Параметры, как ожидают, будут отличаться в зависимости от времени, следовательно меньше чем 1. количество прошлых выборок данных, которые влияют на оценки больше всего.
InitialParameters: [70;-15], исходное предположение для значений параметров. Дополнительный, но рекомендуемый для сокращения начальных переходных процессов.
InitialParameterCovariance: Ваша оценка неуверенности в начальном предположении параметра. Установите его на маленькое значение, 1% абсолютного значения начальных параметров, если вы уверены в начальных предположениях параметра. Дополнительный, но рекомендуемый, особенно когда вы задаете InitialParameters. Это только используется с методами оценки ForgettingFactor и KalmanFilter.
X = recursiveLS(2,... % 2=number of estimated parameters 'EstimationMethod','ForgettingFactor',... 'ForgettingFactor',0.95,... 'InitialParameters',[70; -15],... 'InitialParameterCovariance',[0.7 0.15]);
Этот пример моделирует онлайновую операцию средства оценки путем обеспечения одного (y (t), H (t)) пара к средству оценки за один раз. Вызовите команду шага, чтобы обновить параметры с каждой новой парой. Адаптация параметра включена только, когда вход u вне мертвой зоны (u> 0.3).
theta = zeros(numel(u),2); yHat = zeros(numel(u),1); PHat = zeros(numel(u),2,2); for kk=1:numel(u) % enable parameter estimation only when u is outside the dead-band if u(kk)>=0.3 X.EnableAdaptation = true(); else X.EnableAdaptation = false(); end [theta(kk,:),yHat(kk)] = step(X,y(kk),[u(kk) 1]); % get estimated parameters and output PHat(kk,:,:) = X.ParameterCovariance; % get estimated uncertainty in parameters % perform any desired tasks with the parameters end
Истинные и предполагаемые значения параметров:
figure(); subplot(2,1,1); plot(t,theta(:,1),t,k); % Estimated and real slope, respectively ylabel('Slope'); xlabel('Time'); ylim([49 71]); legend('Estimated','Real','Location','Best'); subplot(2,1,2); plot(t,theta(:,2),t,b); % Estimated and real offset, respectively ylabel('Offset'); xlabel('Time'); ylim([-15.25 -12.75]);
Средство оценки обеспечивает следующие два инструмента, чтобы судить качество оценок параметра:
Выведите оценку : Второй выходной аргумент метода шага . Относительная и абсолютная погрешность между и меры совершенства подгонки.
Оценка ковариации параметра : Это доступно с алгоритмами ForgettingFactor и KalmanFilter. Это хранится в свойстве ParameterCovarianceMatrix средства оценки. Диагонали предполагаемые отклонения параметров. Ниже лучше.
Выходное измерение и его оценка, а также связанные абсолютные и относительные погрешности, когда механизм работает:
engineOn = t>50 & t<950; figure(); subplot(2,1,1); absoluteError = y-yHat; plot(t(engineOn),absoluteError(engineOn)); ylim([-0.15 0.15]); ylabel('Abs. Error [bar]'); subplot(2,1,2); relativeError = (y-yHat)./y; plot(t(engineOn),relativeError(engineOn)); ylim([-0.025 0.025]); ylabel('Rel. Error [unitless]'); xlabel('Time [s]');
Абсолютные погрешности о 0.1bar. Относительные погрешности ниже 2%. Оба количества являются маленькими.
Диагонали ковариационной матрицы параметра, масштабируемой отклонением невязок , получите отклонения оценок параметра. Квадратный корень отклонений является стандартными отклонениями оценок параметра.
noiseVariance = var(y(engineOn)-yHat(engineOn)); figure(); subplot(2,1,1); hold on; plot(t,sqrt(PHat(:,1,1)*noiseVariance)); ylim([0 1]); ylabel('Std. dev. of slope k'); subplot(2,1,2); plot(t,sqrt(PHat(:,2,2)*noiseVariance)); ylim([0 1]); ylabel('Std. dev. of offset b'); xlabel('Time [s]'); hold on;
Стандартное отклонение наклона k колеблется приблизительно 0,7. Это является маленьким относительно области значений значений k [50, 70]. Это вселяет веру в оценках параметра. Ситуация является похожей со смещением b, который находится в области значений [-15 - 13].
Обратите внимание на то, что стандартные отклонения параметра являются также оценками. Они основаны на предположении что невязки являются белыми. Это зависит от метода оценки, его связанных параметров, структуры предполагаемой модели и входного сигнала u. Различия между принятым и фактической образцовой структурой, отсутствием персистентного входного возбуждения или нереалистичных настроек метода оценки могут привести к чрезмерно оптимистическим или пессимистическим оценкам неуверенности.
Вы выполнили подгонку строки использование рекурсивных наименьших квадратов, чтобы получить изменяющееся во времени поведение ввода - вывода гидравлического клапана. Вы оценили качество подгонки путем рассмотрения двух сигналов: ошибка между предполагаемой и измеренной системой вывод и оценками ковариации параметра.
[1] Готье, Жан-Филипп и Филипп Мишо. "Упорядоченный RLS и DHOBE: адаптивный Feedforward для электромагнитного клапана". Технология систем управления, транзакции IEEE на 20,5 (2012): 1311-1318
clone
| isLocked
| recursiveAR
| recursiveARMA
| recursiveARMAX
| recursiveARX
| recursiveBJ
| recursiveLS
| recursiveOE
| release
| reset
| step