📄 myexinfomax.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% NO.2 extended infomax 算法 20051109
%%%%
%%%% 子程序的形式,外部可以调用.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% out1为出信号,out2解混矩阵,x为观测信号
function [out1,out2] = myexinfomax(x);
[row,col] = size(x);
x = x - (mean(x'))'*ones(1,col);
%%%%-------------------------------------------------------------------
%%%% 参数设置
mu = 0.005;N = col;w0 = rand(row);N=col;
%%%%-------------------------------------------------------------------
w = orth(w0);
dw = w;
for t = 1:N
u(:,t)=w*x(:,t);
cs = sech(u(:,t)).^2.*u(:,t).^2-tanh(u(:,t)).*u(:,t);
temp0 = sign(cs);
temp0 = 2*temp0-1;
K = zeros(row,row);
for i=1:row
K(i,i) = temp0(i,1);
end
temp1 = tanh(u(:,t));
temp2 = eye(row)+K*temp1*u(:,t)'-u(:,t)*u(:,t)';
dw = mu*temp2*w;
w = w+dw;
end
u = w*x;
out1 = u;
out2 = w;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -