File: ApplyRFPower2Port.m

package info (click to toggle)
openems 0.0.35%2Bdfsg.1-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 6,288 kB
  • sloc: cpp: 40,259; yacc: 580; lex: 350; makefile: 258; sh: 169; ruby: 19
file content (43 lines) | stat: -rw-r--r-- 1,195 bytes parent folder | download | duplicates (3)
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
function [I_port I_orig_port] = ApplyRFPower2Port(net, port, power, varargin)
% function I_port = ApplyRFPower2Port(net, port, power, varargin)
%
%   Apply a RF power to a given port of your network
%
% arguments:
%   port:           number of ports to apply the power to
%   power:          applied power in W
%
% output:
%   I_port:         Total currents going into the ports
%
% See also: InitNetwork, SetPortTermination, AddElement2Port,
% ApplyCurrent2Port
%
% ------
% Cuicuit Toolbox (https://github.com/thliebig/CTB)
% (c) Thorsten Liebig, 2013

if (numel(port)>1)
    I_port = zeros(net.numPorts,net.numFreq);
    I_orig_port = zeros(net.numPorts,net.numFreq);
    for n=1:numel(port)
        [I_p I_op] = ApplyRFPower2Port(net, port(n), power(n), varargin{:});
        I_port = I_port + I_p;
        I_orig_port = I_orig_port + I_op;
    end
    return
end

if ((port<1) || (port>net.numPorts))
    error 'invalid port number'
end

if (numel(net.Z0)==1)
    Z0 = net.Z0*ones(net.numPorts,1);
else
    Z0 = net.Z0;
end

I_tot = sqrt(2*abs(power)/Z0(port)) * (1-squeeze(net.s(port,port,:))) * exp(1j*angle(power));

[I_port I_orig_port] = ApplyCurrent2Port(net, port, I_tot, varargin);