⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infomaxica.m

📁 信息极大化算法
💻 M
字号:
%基于信息最大化的infomaxica算法,
%注意:可以选择不同的非线性函数,这里选用了tanh(y)
function[w]=infomaxica(x,A)
%求W.
r=2;%对两个信源混合信号进行分离
c=30000;
W= randn(r);

for i = 1:c,
    x(:,i);
       y=x(:,i);
%    y= features(:,i);
   dW= 0.01*(eye(r) - 2*tanh(y)*y')*W;
%如果收敛,跳出
   if (max(max(dW)) > 1e3),
       disp(['Algorithm diverged after ' num2str(i) ' iterations'])
       break
   end
      W	= W + dW; 
%   %%%%%%%%%%%%%%%计算串音误差
%    c=W*A;
%    for p=1:5                                            
%         max1(p)=abs(c(p,1));                           
%         for q=1:5                                
%             if max1(p)<=abs(c(p,q))
%                 max1(p)=abs(c(p,q));
%             else max1(p)=max1(p);
%             end
%         end
%     end
%     s2=0;   
%     for p=1:5
%         s1=0;
%         for q=1:5
%             s1=s1+abs(c(p,q))/max1(p);
%         end
%         s2=s2+abs(s1-1);
%     end
%     
%     
%     for q=1:5
%         max2(q)=abs(c(1,q));
%         for p=1:5
%             if max2(q)<=abs(c(p,q))
%                 max2(q)=abs(c(p,q));
%             else max2(q)=max2(q);
%             end
%         end
%     end
%     
%     s4=0;
%     for q=1:5
%         s3=0;
%         for p=1:5
%             s3=s3+abs(c(p,q))/max2(q);
%         end
%         s4=s4+abs(s3-1);
%     end
% %     k=4000;
% %     t=1:k;
%     e(i)=s2+s4; 
%  %%%%%%%%%%%%%%%%%%%%%%%%
%如果算法收敛,跳出得,到算法收敛的步数
   if (max(max(W)) < 1e-2),
       disp(['Algorithm converged after ' num2str(i) ' iterations'])
       break
   end
   
end
%找到最独立的方向
power= sum(abs(W)');
[m, in]= sort(power);
% W= W(in(r-2+1:r),:);
w=W;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -