function S=S_GEN(L,K,lambda) % generate a L*K Bernouli complex Gaussian matrix with % the variance of non-zero entris=1 and Bernouli parameter % (sparsity)=lambda %generate S follow iid standard normal S=sqrt(1/2).*(randn(L,K)+1j*randn(L,K)); %dropout by probability (1-lambda) if numel(lambda)==1 S=S.*(rand(L,K) <= lambda); elseif numel(lambda)==K S=S.*(rand(L,K) <= repmat(lambda,L,1)); end end
时间: 2024-03-29 16:37:16 浏览: 102
这是一个 Matlab 函数,用于生成一个大小为 L*K 的伯努利复高斯矩阵。其中,非零元素的方差为 1,伯努利参数(稀疏度)为 lambda。
具体解释如下:
1. 首先生成一个 L*K 的独立同分布的标准正态分布矩阵,即每个元素都是从均值为0、方差为1的正态分布中独立地随机抽样得到的。
2. 将上述矩阵中的实部和虚部分别乘以 sqrt(1/2),得到方差为1的复高斯分布矩阵。
3. 通过将矩阵中的元素以概率 (1-lambda) 设为 0,实现了伯努利分布下的稀疏性。
4. 如果传入的 lambda 是一个标量,则所有列的稀疏度都是 lambda;如果 lambda 是一个长度为 K 的向量,则每列的稀疏度分别由向量中对应的元素给出。
该函数的输出是一个大小为 L*K 的复高斯伯努利矩阵。
阅读全文