我想解决以下优化问题:
非Latex:给定x和mu值,查找
argmin_p ||x-p||_2 s.t.||p||_2 < mu.
Latex:
给定$\mathbf{x}$和$\mu$,找到
$\mathrm{argmin}_p \|\mathbf{x}-\mathbf{p}\|_2 \;\; \mathrm{s.t.}\;\;\|\mathbf{p}\|_2 \leq \mu$,它是凸集上的凸函数。我一直在使用Matlab的fmincon,但它太慢了。到目前为止,搜索引擎的结果给我带来了比我所寻找的更多的理论材料。我不是第一个想要解决这个问题的人,我希望找到一个现有的高效的Matlab实现。
发布于 2012-06-25 14:00:52
cvx可以非常简单地处理这个问题。即使你不熟悉它,它的语法也是非常直观的:
% test data
n = 1e4;
x = randn(n,1);
mu = 1;
cvx_begin
variable p(n)
minimize norm(x-p)
subject to
norm(p) <= mu
cvx_end在我的系统上,对于10^4个变量,这需要不到1秒的时间。
https://stackoverflow.com/questions/11183894
复制相似问题