1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
function net = InitNetwork(freq, s_para, varargin)
% function net = InitNetwork(freq, s_para, varargin)
%
% Init a new network with a given frequncy vector and scattering parameter set
%
% arguments:
% freq: frequncy vector
% s_para: scattering parameter
%
% example:
% % read some touchstone s-parameter file
% [type,freq,data,ref]=read_touchstone('test.s3p');
%
% % init network
% net = InitNetwork(freq, data);
% % attach a series capacity to port 2
% net = AddElement2Port(net, 2, 'C_se', 1e-12);
% % terminate all ports with 50 Ohms
% net = AddElement2Port(net, 1:3, 'R_se', 50);
% % apply 1mW to port 1 and get port currents
% I_tot = ApplyRFPower2Port(net, 1, 1e-3);
%
% See also AddElement2Port, ApplyCurrent2Port, ApplyRFPower2Port,
% read_touchstone, write_touchstone
%
% ------
% Cuicuit Toolbox (https://github.com/thliebig/CTB)
% (c) Thorsten Liebig, 2013
net.Z0 = 50;
net.numFreq = numel(freq);
net.numPorts = size(s_para, 1);
net.f = freq;
net.s = s_para;
net.orig.s = s_para;
net.z = s2z(net.s, net.Z0);
net.y = s2y(net.s, net.Z0);
ABCD(1,1,1:net.numFreq) = 1;
ABCD(2,2,:) = 1;
% networks attached to each port
for n=1:net.numPorts
net.ABCD{n} = ABCD;
end
if (size(s_para, 1) ~= size(s_para, 2))
error 'n unequal m'
end
if (size(s_para, 3) ~= net.numFreq)
error 'number of frequencies do not match'
end
|