Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab CVXGEN程序的任意维数_Matlab_Mathematical Optimization_Hessian Matrix_Cvx - Fatal编程技术网

Matlab CVXGEN程序的任意维数

Matlab CVXGEN程序的任意维数,matlab,mathematical-optimization,hessian-matrix,cvx,Matlab,Mathematical Optimization,Hessian Matrix,Cvx,我想使用CVXGEN在MatLab中解决一个QP/LP问题。我更喜欢CVXGEN而不是CVX,因为CVXGEN要快得多。我特别想解决这个问题 min f(x) s.t. x in X 其中,f(x)为二次型,x为紧凸型,由线性函数定义。问题的大小因运行而异。我想尽可能地自动化这个过程。为了举例说明,CVXGEN代码的示例如下: dimensions n = 10 end parameters Q (n,n) psd # quadratic penalty. end varia

我想使用
CVXGEN
MatLab
中解决一个QP/LP问题。我更喜欢
CVXGEN
而不是
CVX
,因为
CVXGEN
要快得多。我特别想解决这个问题

min f(x) s.t. x in X
其中,
f(x)
为二次型,
x
为紧凸型,由线性函数定义。问题的大小因运行而异。我想尽可能地自动化这个过程。为了举例说明,
CVXGEN
代码的示例如下:

dimensions
  n = 10  
end

parameters
  Q (n,n) psd  # quadratic penalty.
end

variables
  x (n)
end

minimize
  quad(x, Q)
end​​​​​​​​​​​​​
​此代码输入到
cvxgen.com
。在这个网站上,我可以生成C代码,这给了我一个唯一的数字。然后我可以使用唯一的编号将其编译成MEX代码。最后,通过运行以下代码,我可以从MatLab调用此MEX代码(
csolve

n=10; % dimension of the problem
params.Q = eye(n,n); % assume that the Hessian is the identity
[vars, status] = csolve(params); % this outputs optimal x* = 0.
n=10; % dimension of the problem
params.Q = eye(n,n); % assume that the Hessian is the identity
[vars, status] = csolve(params); % this outputs optimal x* = 0.

但是,这个过程要求我要运行的问题的每个维度
n
,我需要转到
cvxgen.com
,更改
n
,编译代码,然后运行我的
MatLab
代码。是否可以让
n
作为参数输入?这样,我只需要编译一次代码,然后在我的
MatLab
code集合
params.n=n
params.Q=eye(n,n)
,然后调用
[vars,status]=csolve(params)

简而言之,我认为不可能在
cvxgen.com
上指定任意维度。我有一个解决方案:首先,在MatLab中,允许用户为
cvxgen.com
指定他/她的电子邮件地址和密码。接下来,使用
MatLab
中的
system
命令,调用执行以下步骤的
python
javascript
程序:

1) 用户登录
cvxgen.com

2) 转到网站上的编辑选项卡

3) 复制并粘贴
cvxgen
代码

4) 转到
生成c
选项卡

5) 单击
生成代码

6) 转到
matlab
tab

7) 复制要下载的已编译C代码的唯一标识号

8) 将唯一标识号传回
MatLab
,并通过调用标识号编译
MatLab
中的
Mex
文件

现在可以通过以下命令在
MatLab
中调用
Mex
文件:


简而言之,我认为不可能在
cvxgen.com
上指定任意维度。我有一个解决方案:首先,在MatLab中,允许用户为
cvxgen.com
指定他/她的电子邮件地址和密码。接下来,使用
MatLab
中的
system
命令,调用执行以下步骤的
python
javascript
程序:

1) 用户登录
cvxgen.com

2) 转到网站上的编辑选项卡

3) 复制并粘贴
cvxgen
代码

4) 转到
生成c
选项卡

5) 单击
生成代码

6) 转到
matlab
tab

7) 复制要下载的已编译C代码的唯一标识号

8) 将唯一标识号传回
MatLab
,并通过调用标识号编译
MatLab
中的
Mex
文件

现在可以通过以下命令在
MatLab
中调用
Mex
文件: