⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rake.m

📁 北邮《通信原理基于Matlab的计算机仿真》书的源码 m文件 好不容易弄来的
💻 M
字号:
%Rake接收机
clear all; close all;
Tc = 1;
N = 128;    %扩频增益
gx= '1000010111000101'; %g(x) = x^15+x^13+x^9+x^8+x^7+x^5+1
g = bin2dec(gx);
state = 1;
L = 2^13;

EcN0dB = -21:-14;

for k=1:length(EcN0dB)
        error(k)=0;        %计数错误比特数
        total(k)=0;        %计数总的传输比特数
        sigma(k) = sqrt( 10.^(-EcN0dB(k)/10) /2 );
    while( error(k)<100 )
        %多径结构
        p1 = sqrt(0.5/2)*( randn(1,L)+j*randn(1,L) );
        p2 = sqrt(0.3/2)*( randn(1,L)+j*randn(1,L) );
        p3 = sqrt(0.2/2)*( randn(1,L)+j*randn(1,L) );
        t1 = 0;
        t2 = 1;
        t3 = 2;

        [pt state]= mgen(g,state,L+t3);
        pt = 2*pt-1;

        %数据产生
        d = sign( randn(1,L/N) );   %一次64个
        %扩频,先将数据扩展,然后与pt点积
        dd = sigexpand(d,N);        
        s = conv( dd,ones(1,N) );
        st = s(1:L+t3).*pt(1:L+t3);          %扩频

        %经过多径信道,加入噪声
        z = sigma(k)* ( randn(1,L)+j*randn(1,L) );

        rt = st(1:L).*p1 + st(t2+1:L+t2).*p2 + st(t3+1:L+t3).*p3 + z;

        %rake接收
        r1 = rt.*conj(p1).*pt(1:L);
        r2 = rt.*conj(p2).*pt(t2+1:L+t2);
        r3 = rt.*conj(p3).*pt(t3+1:L+t3);

        %积分
        r1 = reshape(r1,N,L/N); y1 = sum(r1);
        r2 = reshape(r2,N,L/N); y2 = sum(r2);
        r3 = reshape(r3,N,L/N); y3 = sum(r3);
        %合并
        y = y1+y2+y3;       %最大比合并
        %判决
        dc = sign(real(y));
        error(k) = error(k) + sum( abs( (d-dc) )/2 )
        total(k) = total(k) + L/N;
    end
end
ber = error./total;
semilogy(EcN0dB,ber);
xlabel('Ec/N0/dB');ylabel('误比特率');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -