⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcgain.m

📁 数字通信第四版原书的例程
💻 M
字号:
function k = dcgain(a,b,c,d)
%DCGAIN D.C. gain of continuous system.
%	K = DCGAIN(A,B,C,D) computes the steady state (D.C. or low 
%	frequency) gain of the continuous state-space system (A,B,C,D).
%
%	K = DCGAIN(NUM,DEN) computes the steady state gain of the 
%	continuous polynomial transfer function system G(s)=NUM(s)/DEN(s)
%	where NUM and DEN contain the polynomial coefficients in 
%	descending powers of s.
%
%	See also: DDCGAIN.

%	Clay M. Thompson  7-6-90
%	Copyright (c) 1986-93 by the Mathworks, Inc.

error(nargchk(2,4,nargin));

if (nargin==2), % Transfer function description
  [num,den] = tfchk(a,b);
  n = length(den);
  if (n == 0 | length(num) == 0)
      k = [];
  else
      k = num(:,n)/den(n);
  end

elseif nargin==4, % State space description
  error(abcdchk(a,b,c,d));
  if any(abs(eig(a))<eps), % System is singular.
    % Use LU decomposition to solve system.  Put a very small number in place
    % of the singularity.  Set to INF if necessary after calculation.
    [l,u] = lu(a);
    ndx = find(abs(diag(u))<eps);
    if length(ndx)>0, 
       % Make a very small number.
       u(ndx,ndx) = -1.e-300*ones(length(ndx)); 
    end 
    k = -c*(u\(l\b)) + d;
	% Note there is caveat here. If the inverse has all infinites in it
	% and the C matrix has some zero elements, Nans may propogate when the 
	% true solution should have inifinites in it.
    out = find(abs(k)>1.e+200);
    if length(out)>0, k(out) = inf*sign(k(out)); end
  else
    k = -c/a*b + d;
  end
else
  error('Wrong number of input arguments.');
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -