資源簡介
這是一個基于負(fù)熵最大的快速ica matlab源代碼,代碼結(jié)構(gòu)清晰,易學(xué)易懂,稍微改動就可以運用到自己的項目之中。
代碼片段和文件信息
%基于負(fù)熵最大的FASTICA
fs=1000;
N=1024;
t=(0:N-1)/fs;
f1=60;
f2=150;
f3=200;
I1=sin(2*pi*f1*t);
I2=cos(2*pi*f2*t);
I3=randn(size(t));
%?I3=sin(2*pi*f3*t);
subplot(431)plot(I1)title(‘輸入信號1‘)axis([0100-44]);
subplot(432)plot(I2)title(‘輸入信號2‘)axis([0100-44]);
subplot(433)plot(I3)title(‘輸入信號3‘)axis([0100-44]);
%?將其組成矩陣
S=[I1;I2;I3];??????????????????????????%?信號個數(shù)即為變量數(shù)
???????????????????????????????????????%?因此S_all是一個變量個數(shù)*采樣個數(shù)的矩陣
Sweight=rand(size(S1));???????????????%?取一隨機矩陣,作為信號混合的權(quán)矩陣
MixedS=Sweight*S;??????????????????????%?得到三個信號的混合信號矩陣
%?將混合矩陣重新排列并輸出
subplot(434)plot(MixedS(1:))title(‘混合信號1‘)axis([0100-44]);
subplot(435)plot(MixedS(2:))title(‘混合信號2‘)axis([0100-44]);
subplot(436)plot(MixedS(3:))title(‘混合信號3‘)axis([0100-44]);
MixedS_bak=MixedS;?????????????????????????%?將混合后的數(shù)據(jù)備份,以便在恢復(fù)時直接調(diào)用
%%%%%%%%%%%%%%%%%%%%%%%%%%??標(biāo)準(zhǔn)化??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MixedS_mean=zeros(31);
for?i=1:3
????MixedS_mean(i)=mean(MixedS(i:));
end????????????????????????????????????????%?計算MixedS的均值
for?i=1:3
????for?j=1:size(MixedS2)
????????MixedS(ij)=MixedS(ij)-MixedS_mean(i);
????end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%??白化??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MixedS_cov=cov(MixedS‘);????????????????????%?cov為求協(xié)方差的函數(shù)
[ED]=eig(MixedS_cov);??????????????????????%?對信號矩陣的協(xié)方差函數(shù)進(jìn)行特征值分解
Q=inv(sqrt(D))*(E)‘;????????????????????????%?Q為白化矩陣
MixedS_white=Q*MixedS;??????????????????????%?MixedS_white為白化后的信號矩陣
IsI=cov(MixedS_white‘);?????????????????????%?IsI應(yīng)為單位陣????????????
%%%%%%%%%%%%%%%%%%%%%%%% FASTICA算法??%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X=M
評論
共有 條評論