7 views (last 30 days)

Show older comments

My problem here is that if I were to run the following code without the for loop and a fixed value for rtemp, then the variable ExpectedReturn is a 1x1 double.

ExpectedReturn = zeros(size(r));

for i = 1:size(r)

Rtemp = r(i);

b = ones(25,1).*(Rtemp*C);

b = [b;C];

[xLP,FVAL,EXITFLAG]=linprog(f,A,b,Aeq,beq,LB,UB,[],options);

ExpectedReturn(i)=-1*round(FVAL/0.01)*0.01;

end

However, if I were to run it as is, with the value of rtemp varying, I get this error:

In an assignment A(:) = B, the number of elements in A and B must be the same.

Error in PortfolioOpt (line 54)

ExpectedReturn(i)=-1*round(FVAL/0.01)*0.01;

Since I am storing a 1x1 double in ExpectedReturn(i), why does it say the dimensions don't match?

Ahmet Cecen
on 24 Apr 2018

Just convert that to:

ExpectedReturn = cell(size(r));

%...

ExpectedReturn{i}=-1*round(FVAL/0.01)*0.01;

and let it run, then you can come back and see why this is happening. I can't really suggest anything more without seeing a code I can run directly.

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

Start Hunting!