```
clear all
clc
for N=8:2:20
tn = 7;
M = 7; L = 5;
attSR = -40; attPU = -60; % dB
Nt = N;
h = zeros(Nt,M); % Nt antenna to M SRs
g = zeros(Nt,L); % Nt antenna to L PUs
for ii=1:M % to each SRs
h(:,ii) = (1/sqrt(1/attSR))* sqrt(1/2)*(randn(Nt,1)+1i*randn(Nt,1)) ;
H(:,:,ii) = h(:,ii)*h(:,ii)'; %before (7a) to 1 SR
end
for ii=1:L
g(:,ii) = (1/sqrt(1/attPU))* sqrt(1/2)*(randn(Nt,1)+1i*randn(Nt,1)) ;
G(:,:,ii) = g(:,ii)*g(:,ii)' ; %before (7a) to 1 PU
end
end
```

Your post is off-topic, because it doesn’t even involve CVX (even if it might be generating input data for a CVX problem). You should post MATLAB questions not involving CVX at https://www.mathworks.com/matlabcentral/answers/index . I will give you a one time freebie, but will not answer non-CVX questions in the future.

When the for N = for loop is executed for the first time, `H`

is created, and by the end of that time through the for loop, `H`

is 8 by 8 by 7, which is o.k., in that time through the for loop, because `h(:,ii)*h(:,ii)'`

is 8 by 8. However, the 2nd time through the for loop, when `H `

is still 8 by 8 by 7, the h(:,ii)*h(:,ii)’ which you try to assign to `H(:,:,ii)`

is 10 by 10. Hence the MATLAB error message.