I have a 3D matrix `At`

, `n x n x nvar`

, and `nvar`

variables `y1...y25`

. I was easily able to feed the variables into cvx:

```
cvx_begin sdp;
variable A(2*nbus,2*nbus) symmetric;
variable y(1,nvar);
maximize sum(y*Mfun);
A == subs(At,yt,y(1,nvar));
```

However, the equality on the last line is giving me this error:

```
Error using sym/subs>normalize (line 197)
Substitution expression X must be a symbolic, cell, or numeric array.
Error in sym/subs>mupadsubs (line 137)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok
Error in sym/subs (line 125)
G = mupadsubs(F,X,Y);
```

I have tried to set up that equality a few different ways:

Using the same `for`

loop I created `At`

with in the first place (using `Cfun`

, a matrix of doubles):

```
for k = 1:nvar
At = At + yt(k)*Cfun(:,:,k);
end
```

Which gives this error:

```
Error: File: proj.m Line: 124 Column: 11
Illegal use of reserved keyword "for".
```

I didn’t really expect that one to work, but figured it was worth a try.

I have also tried using `bsxfun`

to create the matrix inside cvx, but I don’t believe bsxfun is capable of handling symbolics. `repmat`

is an alternative to ‘bsxfun’ which I haven’t attempted yet.

The reason I am trying to do the problem in this way is to create a routine that can use cvx to solve an optimal power flow for any number/combination of buses, without have to create variable individually each time.