Matlab提示内存不足怎么解决?

clear;
N = 16; %transmit antennas
Mx = 8; % rows of IRS
My = 8; % columns of IRS
M = Mx * My; %total elements of IRS
NG = 64; % number of codewords of IRS
MG_x = 32;
MG_y = 32;
MG = MG_x * MG_y;
L = 3; % paths of BS-IRS
Lprime = 3; % paths of IRS-UE
T = 1500;

FL = 1 / sqrt(N) * exp(1j * (0 : N-1)' * (-1 : 2 / NG : 1 - 2/NG));
Fx = 1 / sqrt(Mx) * exp(1j * (0 : Mx-1)' * (-1 : 2 / MG_x : 1 - 2/MG_x));
Fy = 1 / sqrt(My) * exp(1j * (0 : My-1)' * (-1 : 2 / MG_y : 1 - 2/MG_y));

Fp = kron(Fx, Fy);
f = conj(Fp(:, 1));
Du = diag(f) * Fp;

v = ones(M, 1);
F_hat = kron(conj(FL), Du);
W =[];

G = 0;
for l = 1 : L
ax = 1 / sqrt(Mx) * exp(1j * (0 : Mx-1)' * (2 * rand() - 1));
ay = 1 / sqrt(My) * exp(1j * (0 : My-1)' * (2 * rand() - 1));
ar = kron(ax, ay);
at = 1 / sqrt(N) * exp(1j * (0 : N-1)' * (2 * rand() - 1));
G = G + sqrt(2)/2 * ar * at';
end

hr = 0;
for l = 1 : Lprime
ax = 1 / sqrt(Mx) * exp(1j * (0 : Mx-1)' * (2 * rand() - 1));
ay = 1 / sqrt(My) * exp(1j * (0 : My-1)' * (2 * rand() - 1));
ar = kron(ax, ay);
hr = hr + sqrt(M / Lprime) * sqrt(2)/2 * ar;
end

H = diag(hr') * G;
n = 0;

for t = 1 : T
w = 1 / sqrt(N) * exp(1j * (0 : N-1)' * (2 * rand() - 1));
v = 1 / sqrt(N) * exp(1j * (0 : M-1)' * (2 * rand() - 1));
W = [W; kron(w.', v')];
y(t) = v' * H * w + n;
end
phi = W * F_hat;

[x,res] = omp(y.' ,phi, L * Lprime);
Sigma = reshape(x, MG, NG);
H_est = Du * Sigma * FL';
NMSE = (norm(H_est - H, 'fro') / norm(H,'fro'))^2

img