1. 瑞利PDF的程序:
N=100000;
x=randn(1,N);
y=randn(1,N);
r=sqrt(0.5*(x.^2+y.^2));
step=0.1;
range=0:step:3;
h=hist(r,range);
fr_approx=h/(step*sum(h));
fr=(range/0.5).*exp(-range.^2);
plot(range,fr_approx,'ko',range,fr,'k');
grid;
ylabel('瑞利信道概率密度分布情况')
xlabel('变量')
2. 莱斯CDF的程序:
%主程序
clear all;
Kdb=7;N=100000;Mi=1;
r=rice_fading(Kdb,N,Mi);
RdB=20*log10(r);
Rt=[min(RdB):max(RdB)];
for m=1:length(Rt)
    fade=find(RdB<Rt(m));
    Nm=length(fade);
    AF(m)=Nm/N;
end
semilogy(Rt,AF,'k-o');
grid;
xlabel('Amplitude/RMS(dB)');
title('logCDF');
%莱斯衰落
function r=rice_fading(Kdb,N,Mi)
K=10^(Kdb/10);
const=1/(2*(K+1));
x=randn(1,N);
y=randn(1,N);
r=sqrt(const*((x+sqrt(2*K)).^2+y.^2));
rt=zeros(1,Mi*length(r));
ki=1;
for i=1:length(r)
    rt(ki:i*Mi)=r(i);
    ki=ki+Mi;
end
r=rt;
3. 单径Jakes仿真的方法:
%%file_C7:Jakes.m
%本程序将一随机信号通过瑞利信道,产生输出
Clear all
Ts=0.02;
fmax=2;          %最大多普勒频移
Nt=400;          %采样序列的长度
sig=j*ones(1,Nt);   %信号
t=[0:Nt-1];
%设定信道仿真参数
N0=25
D=1;
[u]=JakesRayleigh(N0,D,fmax,Nt,Ts);   
%生成锐利衰落信道
RecSignal=u.*sig;
plot(10*log10(abs(RecSignal)))
%axis([0.1 0.3 -20 0])
xlabel('时间');
ylabel('幅度(dB)');
title('单径瑞利信道仿真的包络');
%%%%%%%%%%%%%%%%
%JakesRayleigh.m
%本函数用Jakes方法产生单径的符合瑞利分布的复随机过程
%%%%%%%%%%%%%%%%%%%%%function[u]=jakes_single_rayleigh(N0,D,fmax,M,Ts,fc)
%输入参数:
% N0频率不重叠的正弦波个数
% D方差,可由输入功率得到
% fmax最大多普勒频移
% M 码片数
%输出参数
% u 输出复信号
% u1输出复信号的实部
% u2 输出复信号的虚部
N=4*N0+2;     
%Jakes仿真叠加正弦波的总个数
%计算Jakes仿真中的离散多普勒频率
f=zeros(1,N0+1);
 for n=1:N0,
   f(n)=fmax*cos(2*pi*n/N);
 end
f(N0+1)=fmax;
 %计算多普勒增益ci,n
%同相分量增益c1,n
 c1=zeros(1,N0+1);
for n=1:N0,
     c1(n)=D*(2/sqrt(N))*2*cos(pi*n/N0);
 end
c1(N0+1)=D*(2/sqrt(N))*sqrt(2)*cos(pi/4)
%正交分量增益c2,n
 c2=zeros(1,N0+1);
for n=1:N0,
     c2(n)=D*(2/sqrt(N))*2*sin(pi*n/N0);
end
c1(N0+1)=D*(2/sqrt(N))*sqrt(2)*sin(pi/4);
 %插入随机相移ph_i,解决Jakes方法的广义平稳问题
 n=(1:N0+1);
U=rand(size(n));
 [x,k]=sort(U);
 ph_i=2*pi*n(k)/(N0+1);
%计算复包络
u1=zeros(1,M);      %Rc(t)
u2=zeros(1,M);      %Rs(t)
 u=zeros(1,M);       %R(t)
k=0;
%计算Rc(t)
 k=0;
for t=0:Ts:(M-1)*Ts,
   w1=cos(2*pi*f*t+ph_i);
   ut1=c1*w1.';
   k=k+1;
   u1(k)=ut1;
 end
%计算Rs(t)
 k=0;
for t=0:Ts:(M-1)*Ts,
        w2=cos(2*pi*f*t+ph_i);
        ut2=c2*w2.';
        k=k+1;
        u2(k)=ut2;
 end
%计算U(t)
  k=0;
  for t=0:Ts:(M-1)*Ts,
        k=k+1;
        u(k)=u1(k)-j*u2(k);
  end
<< 上一页 [11] [12] [13] [14] [15] [16] [17] 下一页