如何向量化3D数组中二维矩阵的迹约束以优化YALMIP约束构建
向量化实现YALMIP迹约束
可以利用YALMIP对多维数组的原生支持,直接通过逐页计算迹并做向量等式约束来替代循环:
% 假设As是n×n×m的YALMIP变量数组,q为需要约束的前q个页 Constraints = [Constraints, trace(As(:, :, 1:q)) == ones(1, q)];
原理说明
- YALMIP的
trace函数支持对3D数组的每个独立页计算迹,输入As(:, :, 1:q)会提取前q个页的方阵,trace返回一个长度为q的向量,每个元素对应对应页的迹值。 - 将该向量与
ones(1,q)做等式约束时,YALMIP会自动将其解析为q个独立的“迹等于1”约束,效果和循环逐个添加完全一致。 - 这种方式避免了循环中反复扩展
Constraints数组的操作,代码更简洁,且在q较大时性能更优。
内容的提问来源于stack exchange,提问作者gen
相关产品推荐
相关产品推荐

