官网有一个13分钟的视频教程
例一:
cvx_begin
variables x y %定义几个变量,变量之间是空格
minimize ((x+y+3)^2) %目标函数
y>=0 %加入约束
cvx_end
运行后,x和y的值就会改变,并且满足目标和约束
cvx_status %问题解决状态—solved,infeasible…
cvx_optval %目标函数的值,非常小的时候就算是基本上等于零
可以把cvx放到 matlab 代码的任何地方使用
只能解决凸问题,非凸(仿射的约束?)虽然会解决,但结果可能都是0。
例二:
%矩阵的问题
A=randn(100,30);
b=randn(100,1);
cvx_begin
variables x(30) %x是向量型的变量,长度30
x>=0 %约束
sum(x) == 1 %约束,用的双等号
minimize (norm(A*x-b)) %目标函数。结果为向量。所以norm(ans) =sum(|ans|^2)^(1/2),即平方和开方。
cvx_end
例三:
cvx_begin
variables C(3,) symmetric
diag(C) == 1 % 三个都是1
C(1,2) == 0.6 %约束