资源简介

复信号分离代码,分离成功率非常高,可用于工程,仅供参考,希望提供帮助

资源截图

代码片段和文件信息

function [y] = fastICA_Complex_lly_jw(xds)

M = size(x1); % Number of antenna 返回矩阵行数
if (exist(‘ds‘‘var‘)~=1)||isempty(ds)
ds = M; % Number of Sources
end

SigLen = size(x2);   % Signal length 返回x矩阵列数

% % centering
% x = x-repmat(mean(x2)1SigLen);

% whitening
Rx = x*x‘./SigLen;
[uxdx] = eig(Rx);%求Rx的特征值,并构成特征对角矩阵
% White_x = ux*inv(sqrt(dx))*ux‘*x;
if ~isempty(find(inv(sqrt(dx))==Inf 1))%sqrt 平方根 inv 求逆矩阵 find 返回第一个非零元素1的索引值
y=x;
return;
end
WF = inv(sqrt(dx))*ux‘;  
White_x = WF*x;

% sig = [];
% for ii = 1:M
%     sig = [sig;real(White_x(ii:));imag(White_x(ii:))];
% end
sig = reshape([shiftdim(real(White_x)-1);shiftdim(imag(White_x)-1)]...
2*MSigLen);%shiftdim(A1)使A的维号左移1位

% initialize the diagonal filters
% for ii=1:2*M
%     W(iiii) = 1;
% end
W = eye(2*ds2*M);%返回对角线矩阵

NumIter = 200;
convergence = zeros(1NumIter);%0矩阵
count = 1;
% while abs(convergence-0)>1e-4
while count<=NumIter
Wk = W;
y = Wk*sig;
W = ((y.^3)*sig‘)./SigLen - diag(sum(3*(y.

评论

共有 条评论