資源簡介
用可變步長的自然梯度算法解決盲信源分離問題。

代碼片段和文件信息
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
- 上一篇:詞法分析器實驗報告及源代碼
- 下一篇:計算機圖形學試卷
評論
共有 條評論