p = length(ell); if nargin<5, max_kk = min(n,p)-1; end max_kk = min(max_kk,min(p,n)-1); if nargin<4, alpha = 0.5; end s_Wishart = KN_s_Wishart(alpha,beta); sigma_arr = zeros(1,max_kk); for kk=1:max_kk [mu_np sigma_np] = KN_mu_sigma(n,p-kk,beta); sig_hat_kk = KN_noiseEst(ell,n,kk); sigma_arr(kk) = sig_hat_kk; at_least_kk_signals = n * ell(kk) > sig_hat_kk * (mu_np + s_Wishart * sigma_np); if ~at_least_kk_signals, break, end end % for kk=1:max_kk K = kk-1; if K > 0 sigma_hat = sigma_arr(K); else sigma_hat = sum(ell(1:p)) / p; end
时间: 2024-03-11 08:45:43 浏览: 215
c8s1_power_hvdc12pulse.zip_ac-dc-line_power-hvdc12pulse_直流输电500K
4星 · 用户满意度95%
这段代码用来计算伪秩和噪声方差的估计。
首先,计算特征值的个数,即样本协方差矩阵的大小。
然后,如果未指定伪秩的最大值,则将其设置为样本数和特征值个数之间的较小值减1,确保伪秩的最大值不会超过样本数和特征值个数之间的较小值。
接着,如果未指定置信水平,则将其设置为0.5。
然后,使用置信水平和实部或虚部指示符计算s_Wishart。
接下来,初始化一个大小为max_kk的sigma_arr数组。
然后,对于每个kk,使用KN_mu_sigma函数计算mu_np和sigma_np,并使用KN_noiseEst函数计算sig_hat_kk,将其存储在sigma_arr数组中。接着,计算是否至少有kk个信号,即n * ell(kk) > sig_hat_kk * (mu_np + s_Wishart * sigma_np),如果不是,则退出循环。
最后,计算伪秩K,如果K大于0,则噪声方差的估计为sigma_arr(K),否则噪声方差的估计为特征值的平均值。
阅读全文