⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadcase.m

📁 用于潮流计算的实用程序是电力系统毕业设计的必备程序包 使用范围很广的 欢迎测试
💻 M
字号:
function [baseMVA, bus, gen, branch, areas, gencost, info] = loadcase(casefile)%LOADCASE   Load .m or .mat case files or data struct in MATPOWER format%%   [baseMVA, bus, gen, branch, areas, gencost] = loadcase(casefile)%   [baseMVA, bus, gen, branch] = loadcase(casefile)%   mpc = loadcase(casefile)%%   Returns the individual data matrices or a struct containing them as fields.%%   Here casefile is either a struct containing the fields baseMVA, bus,%   gen, branch, areas, gencost, or a string containing the name of the file.%   If casefile contains the extension '.mat' or '.m', then the explicit file%   is searched. If casefile containts no extension, then LOADCASE looks for%   a '.mat' file first, then for a '.m' file.  If the file does not exist%   or doesn't define all matrices, the routine aborts with an appropriate%   error message.  Alternatively, it can be called with the syntax:%%   [baseMVA, bus, gen, branch, areas, gencost, info] = loadcase(casefile)%   [baseMVA, bus, gen, branch, info] = loadcase(casefile)%   [mpc, info] = loadcase(casefile)%%   In this case, the function will not abort, but info will contain an exit%   code as follows:%%       0:  all variables successfully defined%       1:  input argument is not a string or struct%       2:  specified extension-less file name does not exist in search path%       3:  specified .MAT file does not exist in search path%       4:  specified .M file does not exist in search path%       5:  specified file fails to define all matrices or contains syntax err%%   If the input data is not a struct containing a 'version' field, it is%   assumed to be a MATPOWER case file in version 1 format, and will be%   converted to version 2 format.%   MATPOWER%   $Id: loadcase.m,v 1.13 2005/11/04 18:09:47 ray Exp $%   by Carlos E. Murillo-Sanchez, PSERC Cornell & Universidad Autonoma de Manizales%   and Ray Zimmerman, PSERC Cornell%   Copyright (c) 1996-2005 by Power System Engineering Research Center (PSERC)%   See http://www.pserc.cornell.edu/matpower/ for more info.info = 0;if nargout < 3    return_as_struct = logical(1);else    return_as_struct = logical(0);endif nargout > 5    expect_opf_data = logical(1);else    expect_opf_data = logical(0);end%%-----  read data into struct  -----if isstr(casefile)    %% check for explicit extension    l = length(casefile);    if l > 2        if strcmp(casefile(l-1:l), '.m')            rootname = casefile(1:l-2);            extension = '.m';        elseif l > 4            if strcmp(casefile(l-3:l), '.mat')                rootname = casefile(1:l-4);                extension = '.mat';            end        end    end    %% set extension if not specified explicitly    if exist('rootname') ~= 1        rootname = casefile;        if exist([casefile '.mat']) == 2            extension = '.mat';        elseif exist([casefile '.m']) == 2            extension = '.m';        else            info = 2;        end    end        %% attempt to read file    if info == 0        if strcmp(extension,'.mat')         %% from MAT file            try                s = load(rootname);                if isfield(s, 'mpc')                    s = s.mpc;                end            catch                info = 3;            end        elseif strcmp(extension,'.m')       %% from M file            try                         %% assume it returns a struct                s = feval(rootname);            catch                info = 4;            end            if info == 0 & ~isstruct(s) %% if not try individual data matrices                clear s;                if expect_opf_data                    try                        [s.baseMVA, s.bus, s.gen, s.branch, ...                            s.areas, s.gencost] = feval(rootname);                    catch                        info = 4;                    end                else                    if return_as_struct                        try                            [s.baseMVA, s.bus, s.gen, s.branch, ...                                s.areas, s.gencost] = feval(rootname);                        catch                            try                                [s.baseMVA, s.bus, s.gen, s.branch] = feval(rootname);                            catch                                info = 4;                            end                        end                    else                        try                            [s.baseMVA, s.bus, s.gen, s.branch] = feval(rootname);                        catch                            info = 4;                        end                    end                end            end            if info == 4 & exist([rootname '.m']) == 2                info = 5;                err5 = lasterr;            end        end    endelseif isstruct(casefile)    s = casefile;else    info = 1;end%%-----  check contents of struct  -----if info == 0    %% check for required fields    if ~( isfield(s,'baseMVA') & isfield(s,'bus') & ...            isfield(s,'gen') & isfield(s,'branch') ) | ...            ( expect_opf_data & ...                ~( isfield(s,'areas') & isfield(s,'gencost') ) )        info = 5;           %% missing some expected fields        err5 = 'missing data';    else        %% all fields present, copy to mpc        mpc = s;        if ~isfield(mpc, 'version')            mpc.version = '1';        end        if strcmp(mpc.version, '1')            % convert from version 1 to version 2            [mpc.gen, mpc.branch] = mpc_1to2(mpc.gen, mpc.branch);            mpc.version = '2';        end    endend%%-----  define output variables  -----if return_as_struct    bus = info;elseif ~expect_opf_data    areas = info;endif info == 0    %% no errors    if return_as_struct        baseMVA = mpc;    else        baseMVA = mpc.baseMVA;        bus     = mpc.bus;        gen     = mpc.gen;        branch  = mpc.branch;        if isfield(mpc, 'gencost')            areas   = mpc.areas;            gencost = mpc.gencost;        end    endelse            %% we have a problem captain    if nargout == 2 | nargout == 5 | nargout == 7   %% return error code        if return_as_struct            baseMVA = struct([]);        else            baseMVA = []; bus = []; gen = []; branch = [];            if expect_opf_data                areas = []; gencost = [];            end        end    else                                            %% die on error        switch info            case 1,                error('loadcase: input arg should be a struct or a string containing a filename');            case 2,                error('loadcase: specified case not in MATLAB''s search path');            case 3,                error('loadcase: specified MAT file does not exist');            case 4,                error('loadcase: specified M file does not exist');            case 5,                error(sprintf('loadcase: syntax error or undefined data matrix(ices) in the file\n%s', err5));            otherwise,                error('loadcase: unknown error');        end    endendreturn;function [gen, branch] = mpc_1to2(gen, branch)%% define named indices into bus, gen, branch matrices[GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...    MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...    QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;[F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, ...    TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ...    ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch;%%-----  gen  -----%% use the version 1 values for column namesshift = MU_PMAX - PMIN - 1;tmp = num2cell([MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN] - shift);[MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN] = deal(tmp{:});%% add extra columns to gentmp = zeros(size(gen, 1), shift);if size(gen, 2) >= MU_QMIN    gen = [ gen(:, 1:PMIN) tmp gen(:, MU_PMAX:MU_QMIN) ];else    gen = [ gen(:, 1:PMIN) tmp ];end%%-----  branch  -----%% use the version 1 values for column namesshift = PF - BR_STATUS - 1;tmp = num2cell([PF, QF, PT, QT, MU_SF, MU_ST] - shift);[PF, QF, PT, QT, MU_SF, MU_ST] = deal(tmp{:});%% add extra columns to branchtmp = [ ones(size(branch, 1), 1) * [-360 360] ];tmp2 = [ zeros(size(branch, 1), 2) ];if size(branch, 2) >= MU_ST    branch = [ branch(:, 1:BR_STATUS) tmp branch(:, PF:MU_ST) tmp2 ];elseif size(branch, 2) >= QT    branch = [ branch(:, 1:BR_STATUS) tmp branch(:, PF:QT) ];else    branch = [ branch(:, 1:BR_STATUS) tmp ];endreturn;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -