记录一些matlab代码摸索的小知识(仅对我自己)

本文介绍了编程中的代码组织技巧,如使用sdpvar和intvar定义优化变量,以及如何通过cell变量处理三维数据。此外,还详细讲解了如何调用Matpower库进行电力系统分析,包括参数设置、雅可比矩阵计算等实用技巧。
摘要由CSDN通过智能技术生成

1. 写代码时要学会分区分块写,比如说参数、变量、约束和求解目标

2. 定义优化变量

sdpvar
sdpvar(n)定义一个对称n阶优化变量
sdpvar(n,m)定义一个n行m列的优化变量
sdpvar(n,m,'type')

'full'完整的不对称变量矩阵

'symmetric'对称变量矩阵

'diagonal'对角阵

'skew'反对称矩阵

sdpvar n定义一个标量

 intvar与sdpvar相似,只不过为整数优化变量。

对于三维,使用cell变量:(举例说明)

% M 是一个3*5*24
% 通过循环定义
M = cell(1,3); % 将第一个数组拎出
for k = 1:3 
  M{k} = sdpvar(5,24); % 后一对数组对前一个进行嵌套
end

或者使用

M = sdpvar(5*ones(3,1),24*ones(3,1));

学习

http://t.csdnimg.cn/36uOLicon-default.png?t=N7T8http://t.csdnimg.cn/36uOL

 3. 调用matpower的一些参数

举例:

mpc = loadcase('case33bw.m');
opt = mpoption; % 设置潮流计算选项
opt.out.all = 0; % 禁用潮流计算在命令窗口输出结果

results = runpf(mpc, opt);
baseMVA = results.baseMVA;
bus = results.bus;
P_load = bus(:,3);

 或者

mpc = case33bw;
pload = mpc.Pload;%节点有功负荷
qload = mpc.Qload;%节点无功负荷
branch = mpc.branch;
branch(:,3) = branch(:,3)*100/(12.66^2);%求阻抗标幺值
r = real(branch(:,3));
x = imag(branch(:,3));

计算雅可比矩阵:

J = makeJac(mpc);
J_full = full(J);
J_Ptheta = J_full(1:n-1,1:n-1);
J_Pv = J_full(1:n-1,n:end);
J_Qtheta = J_full(n:end,1:n-1);
J_Qv = J_full(n:end,n:end);
Jr = J_Qv-J_Qtheta*inv(J_Ptheta)*J_Pv;
Jr(32,24) = -1.16684565200891e-15;
Jr = (Jr + Jr')/2; %压缩后的雅可比矩阵

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值