📄 covar.m
字号:
function [p,q] = covar(a,b,c,d,w)
%COVAR Covariance response of continuous system to white noise.
% [P,Q] = COVAR(A,B,C,D,W) computes the covariance response of the
% continuous state-space system (A,B,C,D) to Gaussian white noise
% inputs with intensity W,
%
% E[w(t)w(tau)'] = W delta(t-tau)
%
% where delta(t) is the dirac delta. P and Q are the output and
% state covariance responses:
%
% P = E[yy']; Q = E[xx'];
%
% P = COVAR(NUM,DEN,W) computes the output covariance response of
% the polynomial transfer function system. W is the intensity of
% the input noise.
%
% Warning: Unstable systems or systems with a non-zero D matrix have
% infinite covariance response.
%
% See also: DCOVAR,LYAP and DLYAP.
% Clay M. Thompson 7-3-90
% Revised by Wes Wang 8-5-92
% Copyright (c) 1986-93 by the MathWorks, Inc.
error(nargchk(3,5,nargin));
if ~((nargin==3)|(nargin==5)), error('Wrong number of input arguments.'); end
% --- Determine which syntax is being used ---
if (nargin == 3) % T.F. syntax
[num,den] = tfchk(a,b);
w = c;
[a,b,c,d] = tf2ss(num,den);
end
if (nargin==5), error(abcdchk(a,b,c,d)); end
q = lyap(a,b*w*b');
p = c*q*c';
% Systems with non-zero D matrix have infinite output covariance.
if any(abs(d(:))>eps),
disp('Warning: Systems with non-zero D matrix have infinite output covariance.')
pinf = inf*ones(length(p));
if ~isempty(p), p((abs(d*w*d')>eps)) = pinf(abs(d*w*d')>eps); end
end
% A valid covariance must be positive semi-definite.
if min(real(eig(q))) < -eps,
if max(real(eig(a))) > 0
disp('Warning: Unstable system. Returning Infinity.')
else
disp('Warning: Invalid covariance - not positive semi-definite. Returning infinity.')
end
q = inf*ones(length(q)); p = inf*ones(length(p));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -