summaryrefslogtreecommitdiff
path: root/CTB/InitNetwork.m
blob: 960f24efd1d1dd13d00639b1ff07e32f2270e4a1 (plain)
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