MATLAB中cvx工具箱的使用错误

在MATLAB中使用cvx工具箱对优化问题进行求解,但是在施行时报错,不知如何修改?
优化问题如下:

img


上述约束条件中的函数F需要进行db转换,即20*log10(F);猜测应该是这一步的程序写法错误

在MATLAB中的程序为:
cvx_begin %凸优化开始
variable t %定义标量变量
variable w(N) complex %定义复数的向量变量
minimize(t+alpha*(norm(w,1)))%最小化非零元素的个数
subject to
w'Atar == 1; %主瓣波束指向最大:保证主瓣再特定方向处有单位响应
20
log(abs(w'*As))/log(10)<= t; %最大的psll小于阈值
norm(w,inf) <= 2; %限制加权系数的最大增益为2,使得动态范围幅度器变化不大
cvx_end %凸优化结束

报错:
错误使用 cvx/log (line 64)
Disciplined convex programming error:
Illegal operation: log( {convex} ).

出错 test_candelete2 (line 43)
20*log(abs(w'*As))/log(10)<= t; %最大的psll小于阈值

附论文:
Linear Sparse Array Synthesis via Convex Optimization
希望可以有人帮忙解答一下

你好,可能是工具箱不支持log函数,你尝试其他的表达比如:

abs(w'*As)<= exp(t*log(10)/20)

或者分开表达:

w'*As<= exp(t*log(10)/20)
-w'*As<=exp(t*log(10)/20)