Home > matpower5.1 > e2i_data.m

e2i_data

PURPOSE ^

E2I_DATA Converts data from external to internal indexing.

SYNOPSIS ^

function newval = e2i_data(mpc, val, ordering, dim)

DESCRIPTION ^

E2I_DATA   Converts data from external to internal indexing.

   VAL = E2I_DATA(MPC, VAL, ORDERING)
   VAL = E2I_DATA(MPC, VAL, ORDERING, DIM)

   When given a case struct that has already been converted to
   internal indexing, this function can be used to convert other data
   structures as well by passing in 2 or 3 extra parameters in
   addition to the case struct. If the value passed in the 2nd
   argument is a column vector or cell array, it will be converted
   according to the ORDERING specified by the 3rd argument (described
   below). If VAL is an n-dimensional matrix or cell array, then the
   optional 4th argument (DIM, default = 1) can be used to specify
   which dimension to reorder. The return value in this case is the
   value passed in, converted to internal indexing.

   The 3rd argument, ORDERING, is used to indicate whether the data
   corresponds to bus-, gen- or branch-ordered data. It can be one
   of the following three strings: 'bus', 'gen' or 'branch'. For
   data structures with multiple blocks of data, ordered by bus,
   gen or branch, they can be converted with a single call by
   specifying ORDERING as a cell array of strings.

   Any extra elements, rows, columns, etc. beyond those indicated
   in ORDERING, are not disturbed.

   Examples:
       A_int = e2i_data(mpc, A_ext, {'bus','bus','gen','gen'}, 2);

       Converts an A matrix for user-supplied OPF constraints from
       external to internal ordering, where the columns of the A
       matrix correspond to bus voltage angles, then voltage
       magnitudes, then generator real power injections and finally
       generator reactive power injections.

       gencost_int = e2i_data(mpc, gencost_ext, {'gen','gen'}, 1);

       Converts a GENCOST matrix that has both real and reactive power
       costs (in rows 1--ng and ng+1--2*ng, respectively).

   See also I2E_DATA, E2I_FIELD, EXT2INT.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function newval = e2i_data(mpc, val, ordering, dim)
0002 %E2I_DATA   Converts data from external to internal indexing.
0003 %
0004 %   VAL = E2I_DATA(MPC, VAL, ORDERING)
0005 %   VAL = E2I_DATA(MPC, VAL, ORDERING, DIM)
0006 %
0007 %   When given a case struct that has already been converted to
0008 %   internal indexing, this function can be used to convert other data
0009 %   structures as well by passing in 2 or 3 extra parameters in
0010 %   addition to the case struct. If the value passed in the 2nd
0011 %   argument is a column vector or cell array, it will be converted
0012 %   according to the ORDERING specified by the 3rd argument (described
0013 %   below). If VAL is an n-dimensional matrix or cell array, then the
0014 %   optional 4th argument (DIM, default = 1) can be used to specify
0015 %   which dimension to reorder. The return value in this case is the
0016 %   value passed in, converted to internal indexing.
0017 %
0018 %   The 3rd argument, ORDERING, is used to indicate whether the data
0019 %   corresponds to bus-, gen- or branch-ordered data. It can be one
0020 %   of the following three strings: 'bus', 'gen' or 'branch'. For
0021 %   data structures with multiple blocks of data, ordered by bus,
0022 %   gen or branch, they can be converted with a single call by
0023 %   specifying ORDERING as a cell array of strings.
0024 %
0025 %   Any extra elements, rows, columns, etc. beyond those indicated
0026 %   in ORDERING, are not disturbed.
0027 %
0028 %   Examples:
0029 %       A_int = e2i_data(mpc, A_ext, {'bus','bus','gen','gen'}, 2);
0030 %
0031 %       Converts an A matrix for user-supplied OPF constraints from
0032 %       external to internal ordering, where the columns of the A
0033 %       matrix correspond to bus voltage angles, then voltage
0034 %       magnitudes, then generator real power injections and finally
0035 %       generator reactive power injections.
0036 %
0037 %       gencost_int = e2i_data(mpc, gencost_ext, {'gen','gen'}, 1);
0038 %
0039 %       Converts a GENCOST matrix that has both real and reactive power
0040 %       costs (in rows 1--ng and ng+1--2*ng, respectively).
0041 %
0042 %   See also I2E_DATA, E2I_FIELD, EXT2INT.
0043 
0044 %   MATPOWER
0045 %   Copyright (c) 2009-2015 by Power System Engineering Research Center (PSERC)
0046 %   by Ray Zimmerman, PSERC Cornell
0047 %
0048 %   $Id: e2i_data.m 2644 2015-03-11 19:34:22Z ray $
0049 %
0050 %   This file is part of MATPOWER.
0051 %   Covered by the 3-clause BSD License (see LICENSE file for details).
0052 %   See http://www.pserc.cornell.edu/matpower/ for more info.
0053 
0054 if ~isfield(mpc, 'order')
0055     error('e2i_data: mpc does not have the ''order'' field required to convert from external to internal numbering.');
0056 end
0057 o = mpc.order;
0058 if o.state ~= 'i'
0059     error('e2i_data: mpc does not have internal ordering data available, call ext2int first');
0060 end
0061 if nargin < 4
0062     dim = 1;
0063 end
0064 if ischar(ordering)         %% single set
0065     if strcmp(ordering, 'gen')
0066         idx = o.(ordering).status.on(o.(ordering).e2i);
0067     else
0068         idx = o.(ordering).status.on;
0069     end
0070     newval = get_reorder(val, idx, dim);
0071 else                        %% multiple sets
0072     b = 0;  %% base
0073     for k = 1:length(ordering)
0074         n = size(o.ext.(ordering{k}), 1);
0075         v = get_reorder(val, b+(1:n), dim);
0076         new_v{k} = e2i_data(mpc, v, ordering{k}, dim);
0077         b = b + n;
0078     end
0079     n = size(val, dim);
0080     if n > b                %% the rest
0081         v = get_reorder(val, b+1:n, dim);
0082         new_v{length(new_v)+1} = v;
0083     end
0084     newval = cat(dim, new_v{:});
0085 end

Generated on Fri 20-Mar-2015 18:23:34 by m2html © 2005