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

📄 multiroutes.m

📁 信道是多径信道,升余弦滚降
💻 M
字号:
global dt t df N T
close all;
clear Eb_N0 Pe

N=2^16;%总取样点数
L=64;%每码元的采样点数
M=N/L;%码元数
Rb=2;%码率
Ts=1/Rb;%码元宽度
dt=Ts/L;%系统时域采样间隔
df=1/(N*dt);%系统频域采样间隔
T=N*dt;%截断时间
Bs=N*df/2;
alpha=input('滚降系数=[0.5]');
if alpha==[],alpha=0.5;end

t=[-T/2+dt/2:dt:T/2];
f=[-Bs+df/2:df:Bs];

hr1=sin(pi*f*Ts)./sin(pi*f*Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;%升余弦滤波器冲击响应
HR=abs(t2f(hr));
GT=sqrt(HR);%发送滤波器冲击响应
GR=GT;%接收滤波器冲击响应

C=1-0.5*exp(-j*(pi*f*Ts));%多径信道特性

figure(1)
 set(1,'position',[300,10,600,400])
 
figure(2)
 set(2,'position',[300,300,300,200])
 
for ii=1:20
    Eb_N0(ii)=ii-1;
    eb_n0(ii)=10^(Eb_N0(ii)/10);
    Eb=1;
    n0=Eb/eb_n0(ii);%产生二十个信噪比
    sita=n0*Bs; %噪声功率
    
    n_err=0;
for jj=1:5 
    a=sign(2*rand(1,M)-1);
    imp=zeros(1,N);
    imp(L/2:L:N)=a/dt;%产生信息脉冲序列
    IMP=t2f(imp);
    
    n_ch=sqrt(sita)*randn(size(t));%产生白噪声序列
    nr=real(f2t(t2f(n_ch).*GR));%噪声通过信道
    
    H=C.*HR;%信道总传递函数
    sr=real(f2t(IMP.*H))+nr;%信噪相加
    y=sr(L/2:L:N);% 无时间偏差抽样
    aa=sign(y);%判决
    n_err=n_err+length(find(aa~=a));
end
    Pe(ii)=n_err/(M*jj);
end  
figure(1)
semilogy(Eb_N0,Pe,'g');%做实际误码曲线
eb_n0=10.^(Eb_N0/10);
hold on
semilogy(Eb_N0,0.5*erfc(sqrt(eb_n0)));%作出理论误码曲线
xlabel('Eb/N0');
ylabel('Pe');
axis([0,9,1e-4,1]);
h=real(f2t(H));
aC=10*log10(abs(C));
figure(2)
plot(f,real(C));
axis([-10,10,0,2]);%t2f(hr1.*hr2)

⌨️ 快捷键说明

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