能不能帮忙注解一下下面的程序,再讲解一下每一段作用?

%===============================产生信号===================================
M=1000;  %快拍数
thetas=[5,30]*pi/180;    %信号来波方向
Ns=length(thetas);%信号源个数2
for n=1:Ns
    SS(n,1:M)=randn(1,M)+j*randn(1,M);
    SS(n,1:M)=SS(n,1:M)/sqrt(SS(n,1:M)*SS(n,1:M)'/M);
    A(1:Ne,n)=exp(j*[0:Ne-1].'*beta*d*sin(thetas(n)));
end
%================================Monte-Carlo===============================
SNR=-20:1:20;
monte=100;     %Monte-Carlo模拟的次数
kk=0;
for nsnr=1:length(SNR)
   
    Ns_est=0;
    kk=kk+1;
    correct1=0;
    correct2=0;
    for mk=1:monte
         Renoise=randn(Ne,M);
        %=========产生零均值,方差为1的高斯白噪声==========
        for n=1:Ne
            Renoise(n,:)=Renoise(n,:)./std(Renoise(n,:));
            Renoise(n,:)=Renoise(n,:)-mean(Renoise(n,:));
          
        end
        %================================================
        Ps=10.^(SNR(nsnr)./10);     %信号功率
        S=sqrt(Ps).*SS;     
        Y=A*S+Renoise;    %接收到的信号
       R=Y*Y'./M;   %计算协方差矩阵