function [ak,bk,ck,dk] = kalman(a,b,c,d,xi,th)
%KALMAN Calculates the optimal Filter for white noise disturbances.
%	[Ak,Bk,Ck,Dk]=KALMAN(A,B,C,D,XI,TH).
%	Ak, Bk, Ck und Dk ist die Zustandsbeschreibung von
%	Strecke und Kalman-Filter mit den Eingangsgroessen:
%		u
%		xi
%		theta
%	und den Ausgangsgroessen:
%		y    (unter Beruecksichtigung von Prozessrauschen xi) 
%		y+sn (sensor noise)
%		y^

%       26-MAY-1993  Kai P. Muller
%       Copyright (c) 1993 by IfR

error(nargchk(6,6,nargin));
error(nargchk(4,4,nargout));
error(abcdchk(a,b,c,d));

l=lqe(a,eye(4),c,xi,th);
ak=[a zeros(size(a)); l*c a-l*c];
bk=[b eye(4) zeros(size(l)); b zeros(size(a)) l];
ck=[c zeros(size(c)); c zeros(size(c)); zeros(size(c)) c];
dk=zeros(6,8); dk(3:4,7:8)=eye(2);
