MATLAB Answers

Error in line for CVX

22 views (last 30 days)
Aniz Mohamed Rafeeck
Aniz Mohamed Rafeeck on 26 Sep 2021 at 21:26
Commented: the cyclist on 27 Sep 2021 at 14:34
T = 3;
K = 3;
q = 1;
p = [10,1,8];
v = {};
v(1,:) = {[0.08 0.01 1.13;
0 0.02 1.1;
0 0 1.03]};
v(2,:) = {[0.06 0.03 1.07;
0 0.04 1.16;
0 0 1.04]};
v(3,:) = {[0.03 0.01 1.08;
0 0.08 1.01;
0 0.0 1.1]};
cvx_begin
v_max = [0.08 0.01 1.13;
0 0.04 1.16;
0 0 1.1];
variable m(3);
expression P(3);
for i = 1:T
P(i) = (1+1/100)^(m(i)-i)*(1+sum(v_max(m(i),:)));
end
minimize(sum(P))
subject to
for i = 1:T
m(i)<=T;
m(i)>=i;
end
cvx_end
I get an error as

Answers (2)

the cyclist
the cyclist on 26 Sep 2021 at 22:35
I don't know CVX, but the error message seems straightforward. My best guess is that m is a variable of type cvx, and you are trying to use it as an index in this expression:
v_max(m(i),:)
It seems that this syntax is not allowed. Perhaps there is some kind of type conversion you can use.
  2 Comments
the cyclist
the cyclist on 27 Sep 2021 at 14:34
I don't know. You are asking a CVX question, not a MATLAB question. Maybe you can find a forum for CVX.

Sign in to comment.


Sulaymon Eshkabilov
Sulaymon Eshkabilov on 26 Sep 2021 at 22:39
Here is the corrected part of the code:
...
%cvx_begin % Invalid MATLAB command
v_max = [0.08 0.01 1.13;
0 0.04 1.16;
0 0 1.1];
% variable m(3); % Invalid MATLAB command
% expression P(3); % Invalid MATLAB command
m= [1, 2, 3];
for i = 1:T
P(i) = (1+1/100)^(m(i)-i)*(1+sum(v_max(m(i),:)));
end
min(sum(P))
for i = 1:T
m(i)<=T;
m(i)>=i;
end
% cvx_end % Invalid MATLAB command
  1 Comment
the cyclist
the cyclist on 26 Sep 2021 at 23:57
Those commands are valid for the CVX toolbox.

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by