📄 blkbuild.m
字号:
%BLKBUILD Builds a block diagonal state space structure from a block
% diagram of transfer functions and state models. This is a
% SCRIPT FILE.
%
%INPUTS:
% nblocks is the number of blocks in the diagram.
%
% ni and di are the numerator and denominator polynomials for
% the ith block if it is a transfer function.
%
% ai,bi,ci,di are the state matrices for the ith block if it is a
% state model.
%
%OUTPUTS:
% a,b,c,d is the resulting state space structure. The matrices
% are built up by progressive APPENDs of the state
% space representations of each block.
%
% Note: If both ni,di and ai,bi,ci,di exist for the same block then
% an error is generated.
%
% See also: CONNECT.
% Clay M. Thompson
% Revised by Wes Wang 8-5-92
% Copyright (c) 1986-93 by The MathWorks, Inc.
if exist('a1') & exist('b1') & exist('c1')
if exist('n1') & exist('d1')
error('Both state space and transfer function forms for block 1 exist.')
end
a=a1; b=b1; c=c1;
if exist('d1')
d = d1;
else
[ii9,mm9]=size(b1);
[pp9,ii9]=size(c1);
d = zeros(pp9,mm9);
end
elseif exist('n1')
[a,b,c,d]=tf2ss(n1,d1);
else
error('Block 1 is not defined.');
end
for ibb9=2:nblocks
xxist = int2str(ibb9);
if exist(['a' xxist]) & exist(['b' xxist]) & exist(['c' xxist])
% if ai,bi,ci,di exist
if exist(['n' xxist]) & exist(['d' xxist])
error(['Both state space and transfer function forms for block ', ...
xxist,' exist.']);
end
smstr = [ 'a' xxist ',b' xxist ',c' xxist ];
if exist(['d' xxist])
dd9 = eval(['d' xxist]);
else
[ii9,mm9]=size(eval(['b' xxist']));
[pp9,ii9]=size(eval(['c' xxist']));
dd9 = zeros(pp9,mm9);
end
eval([ '[a,b,c,d] = append(a,b,c,d,' smstr ',dd9);']);
elseif exist(['n' xxist]) & exist(['d' xxist])
ii9 = int2str(ibb9); % Convert ibb9 to string representation
[aa9,bb9,cc9,dd9] = eval(['tf2ss(n',ii9,',d',ii9,')']);
[a,b,c,d] = append(a,b,c,d,aa9,bb9,cc9,dd9);
else
error(['Block ' xxist ' is not defined.']);
end
end
[pp9,mm9]=size(d);
disp(['State model [a,b,c,d] of the block diagram has ',int2str(mm9), ...
' inputs and ',int2str(pp9),' outputs'])
clear aa9 bb9 cc9 dd9 ii9 ibb9 xxist smstr pp9 mm9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -