📄 lp2bp.m
字号:
function [at,bt,ct,dt] = lp2bp(a,b,c,d,wo,bw)
%LP2BP Lowpass to bandpass analog filter transformation.
% [NUMT,DENT] = LP2BP(NUM,DEN,Wo,Bw) transforms the lowpass filter
% prototype NUM(s)/DEN(s) with unity cutoff frequency to a
% bandpass filter with center frequency Wo and bandwidth Bw.
% [AT,BT,CT,DT] = LP2BP(A,B,C,D,Wo,Bw) does the same when the
% filter is described in state-space form.
% Author(s): J.N. Little and G.F. Franklin, 8-4-87
% Copyright (c) 1988-98 by The MathWorks, Inc.
% $Revision: 1.11 $ $Date: 1997/12/02 19:16:59 $
if nargin == 4 % Transfer function case
% handle column vector inputs: convert to rows
if size(a,2) == 1
a = a(:).';
end
if size(b,2) == 1
b = b(:).';
end
% Transform to state-space
wo = c;
bw = d;
[a,b,c,d] = tf2ss(a,b);
end
error(abcdchk(a,b,c,d));
[ma,nb] = size(b);
[mc,ma] = size(c);
% Transform lowpass to bandpass
q = wo/bw;
at = wo*[a/q eye(ma); -eye(ma) zeros(ma)];
bt = wo*[b/q; zeros(ma,nb)];
ct = [c zeros(mc,ma)];
dt = d;
if nargin == 4 % Transfer function case
% Transform back to transfer function
[z,k] = tzero(at,bt,ct,dt);
num = k * poly(z);
den = poly(at);
at = num;
bt = den;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -