WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Parameter festlegen, die noch keinen Wert haben

 

gittetier

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2014, 15:55     Titel: Parameter festlegen, die noch keinen Wert haben
  Antworten mit Zitat      
Hallo,
ich muss eine Funktion festlegen die aus einem ziemlich langen Term mit vielen Parametern besteht. Diese Parameter werden aber erst weiter unten im Programm mit ML geschätzt. Sie haben an der Stelle, an der ich sie einführe also noch keinen Wert. Ich habe das ganze versucht mit function handles zu definieren, aber das funktioniert nicht. Weiter unten mein Code).

Das Problem liegt bei der ML-Schätzung der Parameter:
Also ich lege zuerst die ganzen function handles und Startwerte fest, aber wenn ich dann den function handle der Likelihoodfunktion mit fminsearch versuche zu maximieren, dann sagt Matlab, dass ich die untergeordneten function handles nicht für diese Funktionen wie zB inv(functionhandle) benutzen darf.
Kann mir jemand helfen?

Es soll mal ein Kalman Filter werden ...


Code:
%% parameters
sigma.vt = 1;
F = @(phi, alpha1, alpha2) [phi 0 0; 0 alpha1 0; 0 0 alpha2];
H = @(gamma1, gamma2) [gamma1 1 0; gamma2 0 1];
Q = @(sigma1, sigma2) [1 0 0; 0 sigma1^2 0; 0 0 sigma2^2];


%% initializing values for beta_0 and P_0

in.c(1)=0;
in.z1(1)=y1(1);
in.z2(1)= y2(1);
y=[y1; y2];

beta = zeros(3, 190);
beta(:,1)= [in.c(1); in.z1(1); in.z2(1)];
P = [1 0 0; 0 0 0; 0 0 0];  
l =zeros(190,1);




%% FILTER

for t=1:3

   
   
% BASIC FILTER


beta_predict = @(phi, alpha1, alpha2)  [phi 0 0; 0 alpha1 0; 0 0 alpha2] *beta(:,t);


P_predict = @(phi, alpha1, alpha2, sigma1, sigma2) F * P * F' + Q;


eta = @(gamma1, gamma2, phi, alpha1, alpha2) y(t) - H * beta_predict;


f = @(gamma1, gamma2,phi, alpha1, alpha2, sigma1, sigma2)  H * P_predict * H';



% ML-SCHÄTZUNG DER PARAMETER
likelihood= @(gamma1, gamma2, phi, alpha1, alpha2, sigma1, sigma2) (-1)* ( l(t) -  0.5 *log((2*pi)^2*det(f))-0.5* eta' * [b]inv(f)[/b]* eta);
x0 = [0.1 0.1 0.1 0.1 0.1 2 2];
[theta,l(t+1)] = fminsearch(likelihood, x0)

% UPDATE
gamma1 = theta(1);
gamma2 = theat(2);
phi = theta(3);
alpha1 = theta(4);
alpha2 = theta(5);
sigma1 = theta(6);
sigma2 = theta(7);

% beta_t|t= beta_t|t-1 + P_t|t-1 * H' * inv(f) * eta_t|t-1
beta(:, t+1) = beta_predict + P_predict * H' * inv(f) * eta

end


[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.