资源简介
bpa文件转化为matpower中mpc结构体
兼容中英文环境
代码片段和文件信息
% 读取BPA格式数据文件,生成MATPOWER所需电网对象和母线列表
function [mpc buslist] = bpa2matpower()
tic;
% 1. 读入BPA文件的所有内容
[FileNamePathName] = uigetfile(‘*.dat‘);
bpafile=fullfile(PathNameFileName);
disp([‘读入原始BPA潮流文件‘ bpafile ‘的内容...‘]);
% 1.1. 打开BPA潮流文件
fid = fopen(bpafile ‘r+‘‘n‘‘ASCII‘);%打开为ASCII
% 1.2. 将所有内容读入到字符串集合中
bpa_info = cell(5000 1);
ii = 1;
while (~feof(fid))
newline = fgetl(fid);
bpa_info(ii) = {newline};
ii = ii + 1;
end
% 1.3. 将未利用到的预分配数组元素所占资源释放掉
for jj = ii : 5000
bpa_info(ii) = [];
end
% 1.3. 关闭BPA潮流文件
fclose(fid);
% 2. 生成MatPower电力网络对象和母线名称列表
% 2.1. 得到母线个数,支路个数,基准容量
busNumber = 0;
genNumber = 0;
branchNumber = 0;
disp(‘获得电网基本参数(母线个数,支路个数,基准容量)...‘);
for ii = 1 : length(bpa_info)
thisline = bpa_info{ii};
% 2.1.1. 获得基准容量
if (length(thisline) >= 13 && strcmp(thisline(2 : 9) ‘MVA_base‘))
baseMVA = str2double(thisline(11 : 13));
end
% 2.1.2. 统计母线个数
if (length(thisline) > 2 && strcmp(thisline(1) ‘B‘))
busNumber = busNumber + 1;
if (strcmp(thisline(1 : 2) ‘BS‘) || strcmp(thisline(1 : 2) ‘BE‘) || strcmp(thisline(1 : 2) ‘BQ‘))
genNumber = genNumber + 1;
end
end
% 2.1.3. 统计支路个数
if (length(thisline) > 2 && (strcmp(thisline(1) ‘L‘) || strcmp(thisline(1) ‘T‘)))
branchNumber = branchNumber + 1;
end
end
% 2.2. 得到母线矩阵,发电机矩阵,支路矩阵,母线列表
% 2.2.1. 得到母线矩阵和母线名称列表
busMatrix = zeros(busNumber 13);
buslist = cell(busNumber 1);
busIndex = 0;
disp(‘获得母线矩阵和母线名称列表...‘);
for ii = 1 : length(bpa_info)
thisline = bpa_info{ii};
if (length(thisline) < 72) % 在长度不足72的字符串后面补足空格
thisline = [thisline blanks(72 - length(thisline))];
end
if (strcmp(thisline(1) ‘B‘))
busIndex = busIndex + 1;
busMatrix(busIndex 1) = busIndex; % 母线编号
switch thisline(2) % 母线类型
case {‘ ‘ ‘T‘ ‘C‘ ‘V‘} % PQ节点
busMatrix(busIndex 2) = 1;
case {‘E‘ ‘Q‘ ‘G‘} % PV节点
busMatrix(busIndex 2) = 2;
case ‘S‘ % 平衡节点
busMatrix(busIndex 2) = 3;
end
if (~strcmp(thisline(21 : 25) blanks(5)))
busMatrix(busIndex 3) = str2double(thisline(21 : 25)); % 有功负荷
else
busMatrix(busIndex 3) = 0.0; % 有功负荷
end
if (~strcmp(thisline(26 : 30) blanks(5)))
busMatrix(busIndex 4) = str2double(thisline(26 : 30)); % 无功负荷
else
busMatrix(busIndex 4) = 0.0; % 无功负荷
end
if (~strcmp(thisline(31 : 34) blanks(4)))
busMatrix(busIndex 5) = str2double(thisline(31 : 34)); % 对地电导(用额定电压下有功来表示)
else
busMatrix(busIndex 5) = 0.0; % 对地电导(用额定电压下有功来表示)
end
if (~strcmp(thisline(35 : 38) blanks(4)))
busMatrix(busIndex 6) = str2double(thisline(35 : 38)); % 对地电纳(用额定电压下无功来表示,容性为正)
else
busMatrix(busInde
- 上一篇:PAM系统仿真matlab版本
- 下一篇:阵列天线方向图
相关资源
- PAM系统仿真matlab版本
- 基于matlab的RBF神经网络模式分类
- 利用matlab实现的简单的基于卡尔曼滤
- MATLAB2019A破解版百度云链接(已亲测
- Matlab2018B破解版云盘链接.rar
- Matlab遗传算法工具箱gaot及安装
- 量子粒子群算法的matlab实现,有程序
- 图像清晰度评价函数
- MATLAB神经网络应用设计第二版源代码
- 三次样条插值函数csape的用法
- arrow3.m--Matlab
- 随机森林Matlab
- 蚁群算法采用matlab开发的仿真平台
- GPS基本原理及其MATLAB实现全部MATLAB程
- matlab_倾斜校正算法代码
-
OFDM的QPSK的simuli
nk仿真,matlab 2016a版 - AWGN信道的蒙特卡洛仿真
- Matlab Maggiwick
- 非常好用的MATLAB混沌工具箱
- MATLAB绘制2维数据点程序,用于显示聚
- 平均间隙法matlab代码
- matlab图像互信息计算
- 鸡群算法CSOmatlab程序代码
- 香农编码、霍夫曼编码比较的matlab源
- 三次样条插值的MATLAB程序
- 红枣尺寸检测的matlab代码
- 利用matlab实现图像的角点检测
- matlab实现的哈密顿环路
- Matlab优化工具箱的常用
- 简单神经网络MATLAB编程
评论
共有 条评论