資源簡介
自己編寫的BP神經網絡的盲均衡算法分析,在matlab環境中運行,沒有用其工具箱,用于學習交流。環境大家提意見,共同學習中。
代碼片段和文件信息
%?采用BPnet訓練的網絡結構進行盲均衡結構初始化?
%?僅使用實數部分
%function?BPnetBE
%?初始信息
%?取一種信噪比生成消息序列信號,進行信道加載,然后常模算法進行盲均衡
snr=25;
%產生的消息序列長度
N=5000;
%符號間矩1每符號能量10倍間矩
d=1;Eav=10*d^2;
%16進制QAM
M=16;
%?噪聲方差
sigma=sqrt(Eav/(8*snr));
%?產生消息源,其值為1到16間的數字
for?j=1:N
????temp=rand;
????source(j)=1+floor(temp*M);???
end
%正交振幅調制源
mapping=[-3*d?3*d;
????-d??3*d;
????d??3*d;
????3*d??3*d;
????-3*d??d;
????-d??d;
????d??d;
????3*d??d;
????-3*d??-d;?
????-d??-d;?
????d??-d;
????3*d??-d;
????-3*d??-3*d;
????-d??-3*d;
????d??-3*d;
????3*d??-3*d];
%計算R2
for?j=1:size(mapping1)
????A(j)=complex(mapping(j1)mapping(j2));
end
R2=mean((abs(A)).^4)/mean((abs(A)).^2);
%對信號進行正交幅度調制
for?j=1:N
????qamSignal(j:)=mapping(source(j):);
end
%?將信號復數化
for?j=1:N
????complexSignal(j)=complex(qamSignal(j1)qamSignal(j2));
end
%信號信道傳輸,加載噪聲
signal=awgn(complexSignalsnr);
source=real(signal);
Rcm=mean(source.^4)/mean(source.^2);
%?對輸出信號進行有監督訓練,輸出W,A,B
%?網絡結構為K-p-1
K=11;p=5;
%?學習率
mu=.01;
%?初始化結構參數
%w=rand(Kp);A=rand(p1);b=randn;
?w=1.5.*[-0.1381????0.7334????1.4331????1.4062????1.9337
????0.6457????0.2303???-0.0099???-0.0224????0.2901
????0.4834????0.8594???-0.1690????0.4117????0.3068
????0.4167????0.0382???-0.0805???-0.1111????0.3788
????0.1846????0.8935???-0.1224???-0.1736????0.3069
????0.7614????0.1082???-0.0010????0.3402????0.1662
???-0.0105????0.5294???-0.1203????0.1100????0.3043
????0.9053????0.2909???-0.0818????0.5997????0.4018
????0.7831????0.2297????0.2840????0.5805???-0.4130
????0.3335????0.5554???-0.0463????0.3436????0.1220
????0.0228????0.0676???-0.3686????0.7291????0.2536];
A=1.5.*[-0.6266
????0.0655
????2.9150
????0.8317
????1.8829];
b=-2.5808;
%?盲均衡訓練
for?jt=1:N-K
????s=source(jt:jt+K-1)‘;
????%?層II?隱層
????x=w‘*s;
????y=1./(1+exp(-x));
????%?層III?輸出層
????f=A‘*y+b;
????%?有監督訓練
????J(jt)=0.25*(f^2-Rcm)^2;
????Jf=f-s(1);
????fb=1;fA=y;fy=A;
????yx=y.*(1-y);
????for?j=1:p
????????xw(:j)=s;
????end
????db=-Jf*fb;
????dA=-Jf*fA;
????for?j=1:p
????????dw(:j)=-Jf*fy(j)*yx(j)*xw(:j);
????end
????b=b+mu.*db;A=A+mu.*dA;w=w+mu.*dw;
end
plot(J);
%?計算誤碼率
for?jt=1:N-K
????s=source(jt:jt+K-1)‘;
????%?層II?隱層
????x=w‘*s;
????y=1./(1+exp(-x));
????%?層III?輸出層
????ts(jt)=A‘*y+b;
end
for?jt=1:N-K
????if(ts(jt)<=0)
????????if(abs(ts(jt))>2)
????????????test(jt)=-3;
????????else
????????????test(jt)=-1;
????????end
????elseif(ts(jt)>0)
????????if(ts(jt)>2)
????????????test(jt)=3;
????????else
????????????test(jt)=1;
????????end
????end
end
aims=real(complexSignal);
aim=aims(1:N-K);
BER=sum(abs(test-aim))/(N-K);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.CA....??????2834??2009-02-03?11:10??BPnetBE.m
????.CA....???????251??2009-02-03?14:57??BPnetBEMain.m
-----------?---------??----------?-----??----
?????????????????3085????????????????????2
評論
共有 條評論