如何解决“内部矩阵尺寸必须同意”错误?

时间:2017-08-08 18:00:17

标签: matlab mathematical-optimization convex-optimization cvx

这是CVX中的代码:

load('C')

r=C(:,4);
t=C(:,5);

n = size(C,1);
N = 100;

for i=1:n
    eta(i,1) = randn()/2;
end

cvx_begin
    variable x(n,1)

    maximize r'*x - t'*x

    subject to
        ones(n,1)'*x == N
        x >= zeros(n,1)
        exp(-x/N) >= eta
cvx_end

它在声明目标函数的行中给出以下错误:

  

“内部矩阵尺寸必须一致。”

我做错了什么?

即使我按如下方式编写最后一个约束,错误仍然存​​在:

for i=1:n
    exp(-x(i,1)/N) >= eta(i,1)
end

1 个答案:

答案 0 :(得分:1)

错误是我没有在目标函数周围加上括号,这在特定情况下是必需的,因为它有2个术语。因此,maximize (r'*x-t'*x)解决了错误。