资源简介
用可变步长的自然梯度算法解决盲信源分离问题。
代码片段和文件信息
function second(MU N K)
% mu - 步长
% N - 总体样本个数
% K - 独立仿真次数
m = 5; % 信号维数
Fs = 1000; % 采样频率
A = rand(m); % 随机混合矩阵A m*m
Nd = 0.000001;
N0 = N/2.0;
while det(A)==0
A = rand(m);
end
% W矩阵初始化
W(::1) = eye(m);
% [-11] 均匀分布噪声
v = 1-2*rand([1N]);
% 产生原始信号
for i=1:N
s(:i) = [sign(cos(2*pi*155*i/Fs));sin(2*pi*800*i/Fs);sin(2*pi*300*i/Fs+6*cos(2*pi*60*i/Fs));sin(2*pi*90*i/Fs);v(i)];
end
% 进行K次独立仿真
for k=1:K
mu = MU;
% 迭代N次求W
for i=1:N
if i>N0
mu = mu * exp(-Nd*(i-N0));
end
E(ki) = 0;
x = A * s(:i);
y = W(::i) * x;
W(::i+1) = W(::i) + mu.*(eye(m) - (y.^3)*y‘)*W(::i);
% 串音误差的计算
P = W(::i+1)*A;
for j=1:m
E(ki) = E(ki) + (sum(abs(P(:j)))/max(abs(P(:j)))-1 + sum(abs(P(j:)))/max(abs(P(j:)))-1);
end
end
end
% 求平均值
for i=1:N
EA(i) = sum(E(:i))/K;
end
axis = [1:N];
plot(axisEA);
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 960 2010-11-12 02:26 second.m
----------- --------- ---------- ----- ----
960 1
- 上一篇:词法分析器实验报告及源代码
- 下一篇:计算机图形学试卷
评论
共有 条评论