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] 下一页