资源简介
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版本
- 下一篇:阵列天线方向图
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论