求问 为什么做出来不对呢,感觉这个程序没什么问题,用的是MDL方法来估计信号源数,在进行ICA分析,跪求大神解答
function EVA=EVA(X)
N=size(X,2);
Rxx=X*X'/N;
[EV,D] = eig(Rxx); %特征值分解(D是特征值对角阵,EV是特征向量阵)
EVA = diag(D)'; %提取特征值,行排列 (diag把主对角线上的数据取出写成列向量的形式)
[EVA,I] = sort(EVA); %特征值从小到大排列(sort从小到大排列,I保存原排序位置)
EVA = fliplr(EVA); %特征值从大到小排列(fliplr函数表示左右翻转)
EV = fliplr(EV(:,I)); %特征向量与特征值排序一一对应
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信源数估计算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%M 阵元数 s.M
%EVA 特征值
%T 快拍数/采样数
function Ke = MDL(X_processed, X)
T=size(X,2); %T是X的列数
M=size(X,1); %M是X的行数
MDL = zeros(1,M);
for k = 0:M-1
temp = X_processed(k+1:M); %提取释然函数需要的特征值
Tsph = mean(temp)/((prod(temp))^(1/(M-k))); %释然函数
MDL(k+1) = T*(M-k)*log(Tsph)+2*k*(2*M-k); %MDL算法
end
[~,b] = min(MDL);
Ke = b-1;
end
clear
clc
A= xlsread('d00.xlsx');
X=A';
Ke = MDL(EVA(X), X);



雷达卡



京公网安备 11010802022788号







