• 大小: 1.94 KB
    文件类型: .rar
    金币: 1
    下载: 1 次
    发布日期: 2024-09-01
  • 语言: Matlab
  • 标签: 盲均衡  matlab  

资源简介

自己编写的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


评论

共有 条评论