在MATLAB中MUSIC算法入射源如何才能写成相关信源?

问题遇到的现象和发生背景

希望有哪位帮我指点一下,如何在MATLAB中生成相干信号

这是在CSDN中找的代码,用来学习。资料里说MUSIC算法在相关信源情况下会性能大打折扣,因为之后解决方法时用ESPRIT算法,所以我想做出一个相干信源情况下的MUSIC算法结果出来,但找了很久都不知道怎么构建相干信号,没办法完成二者的对比。

问题相关代码,请勿粘贴截图

MUSIC算法的MATLAB程序,用S=randn(M,K);生成了非相干信号;

clear; close all;
% MUSIC for Uniform Linear Array%
derad = pi/180; 角度->弧度
N = 8; 阵元个数
M = 3; 信源数目
theta = [-30 0 5]; 待估计角度
snr = 10; 信噪比
K = 512; 快拍数

dd = 0.5; 阵元间距
d=0:dd:(N-1)dd;
A=exp(-1i
2pid.'sin(thetaderad)); 方向矢量
构建信号模型
S=randn(M,K); 信源信号M个,入射信号,快拍数K, randn - 正态分布的随机数,如randn(3,4) 返回一个 3×4 的矩阵
X=AS; 构造接收信号
X1=awgn(X,snr,'measured'); awgn函数:将白色高斯噪声添加到信号中
计算协方差矩阵
Rxx=X1
X1'/K;
特征值分解
[EV,D]=eig(Rxx); 特征值分解
EVA=diag(D)'; 将特征值矩阵对角线提取并转为一行
[EVA,I]=sort(EVA); 将特征值排序 从小到大
EV=fliplr(EV(:,I)); 对应特征矢量排序

遍历每个角度,计算空间谱
for iang = 1:361
angle(iang)=(iang-181)/2;
phim=deradangle(iang);
a=exp(-1i
2pid*sin(phim)).';
En=EV(:,M+1:N); 取矩阵的第M+1到N列组成噪声子空间
Pmusic(iang)=1/(a'EnEn'a);
end
Pmusic=abs(Pmusic); abs(x)函数:绝对值和复数的模
Pmmax=max(Pmusic)
Pmusic=10
log10(Pmusic/Pmmax); 归一化处理
h=plot(angle,Pmusic);
set(h,'Linewidth',2);
xlabel('入射角/(degree)');
ylabel('空间谱/(dB)');
set(gca, 'XTick',[-90:30:90]);
grid on;

运行结果及报错内容

两个都是非相干信号,我想试试相干信号的情况。抱歉因为CSDN提问机制的原因,我删除了所有注释符号%,但汉字部分基本都是我在学习时候自己打的注释

我的解答思路和尝试过的方法
我想要达到的结果

信源数估计的MATLAB程序
https://wenku.baidu.com/view/da999c64d4d8d15abf234e7a.html