Azzera filtri
Azzera filtri

Extended Kalman Filter state transition parameters

6 visualizzazioni (ultimi 30 giorni)
As a follow up to this question, I am wondering how to correctly input a vector of additional parameters to an EKF block.
The state transition function is a wrapper of the state function used for a NLMPC.
Similar to the following example: Swing-Up Control of a Pendulum. My state function works using additional parameters like the "Ts" used in the example. In my case, however, the additional parameters are some signals U from my plant plus 37 predefined parameters in the base workspace.
This parameters are given as a vector "p".
For now I have tried using a mux:
The simulation fails during compilation with the following error:
The function used as a wrapper looks as follows:
function xk1 = stateFcnEKF_mixBufRd_wrapper(xk, u)
% Wrapper function for the State function used by the Extended Kalman Filter block.
%
%
% u = [signal1 signal2 signal3 signal4 p]
%
% Outputs:
% xk1: Updated state values based on xk and uk
uk = [u(1) u(2) u(3) u(4)];
p = u(5); % <----- vector of 37 parameters defined in base workspace
xk1 = stateFcnDT0_mixBufRd(xk, uk, p); % <----- function used in NLMPC
Any ideas how the configuration of blocks should look like?
I have tried using IC and signal description blocks but I am not sure of the correct input definition.

Risposta accettata

Eduardo
Eduardo il 27 Gen 2023
The mux block works just fine, my error was taking p was the fifth input, instead it should have been defined as:
p(5:end)

Più risposte (1)

Emmanouil Tzorakoleftherakis
Glad you figured it out. By the way, this example shows the general workflow of using NLMPC + EKF with additional parameters

Categorie

Scopri di più su Model Predictive Control Toolbox in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by