安装完CVXQUAD后使用一切正常,但是关闭matlab后再次启动时,突然出现错误:函数或变量 'op_rel_entr_epi_cone' 无法识别。
试了删除exponential.m文件,又重新复制到cvx的sets下,但是错误变成了:无法将类型为 struct 的值用作索引。这意味着CVXQUAD不能正常工作。使用如下代码测试CVXQUAD是否能正常干工作:
n = 4;
M = randn(n,n);
M = M*M';
cvx_begin
variable X(n,n) symmetric
minimize quantum_rel_entr(M,X)
subject to
diag(X) == ones(n,1)
cvx_end
出现同样的错误:无法将类型为 struct 的值用作索引。
于是:
1. 重新装了一下CVX,在command window中输入:cvx_setup。
2. 然后在command window中输入如下命令: addpath(genpath('.../cvxquad-master')).
问题解决了。后来发现只需要执行上述两个步骤, 无需删除exponential.m文件再粘贴过去.
虽然问题解决了,但是我并不清楚导致CVX不能正常工作的原因,以自己的经历供大家参考。