资源简介
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版本
- 下一篇:阵列天线方向图
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论