产生一个两径信道和一个指数衰减的多径信道
clear,clf
scale = 1e-9;%纳秒量级
Ts = 10*scale;%采样时间间隔为10ms,在这个程序中这个量也为指数信道路径间隔
t_rms = 30 * scale;%RMS时延扩展为30ms
num_ch = 10000;%仿真信道个数
%两径信道模型
%产生并绘制理想的两径信道模型和瑞利分布两径信道模型
pow_2=[0.5 0.5];delay_2=[0 t_rms*2]/scale;
%给出理想两径信道功率均为0.5W,时延为0和60ns
H_2=[Ray_model(num_ch);Ray_model(num_ch)].'*diag(sqrt(pow_2));
%产生瑞利两径信道幅度系数。通过调用子程序Ray_model产生归一化功率的瑞利两径信道幅度系数
avg_pow_h_2=mean(H_2.*conj(H_2));
%计算瑞利分布两径信道每一径的平均功率。在这里可以看到上一条语句中diag(sqrt(pow_2))的作用。当通过对幅度系数进行HH*运算计算功率时,sqrt(pow_2)可以使每一径的功率为pow_2,即每一径
%的功率为0.5W
subplot(121)
stem(delay_2,pow_2,'ko'),hold on,stem(delay_2,avg_pow_h_2,'k. ');
xlabel('Delay[ns]'),ylabel('Channel Power[linear]');
title('2-ray Model');
legend('Ideal','Simulation');axis([-10 140 0 0.7]);
%指数信道模型
%产生并绘制理想的 指数信道模型和瑞利分布的指数信道模型
pow_e=exp_PDP(t_rms,Ts);%通过调用exp_PDP子程序,计算理想指数信道每一径上的功率
delay_e=[0:length(pow_e)-1]*Ts/scale;%计算指数信道每一径的时延,单位为ns
for i=1:length(pow_e)H_e(:,i)=Ray_model(num_ch).'*sqrt(pow_e(i));
end
%计算瑞利分布的指数信道幅度系数。通过调用Ray_model产生归一化功率的瑞利分布幅度系数,sqrt(pow_e(i))的作用类似于diag(sqrt(pow_2))
avg_pow_h_e=mean(H_e.*conj(H_e));%计算瑞利分布指数信道的平均功率。
%由于sqrt(pow_e(i))的存在,瑞利分布指数信道每一径的平均功率也为pow_e(i),即与理想指数信道每一径功率相同
subplot(122)
stem(delay_e,pow_e,'ko'),hold on,stem(delay_e,avg_pow_h_e,'k. ');
xlabel('Delay[ns]'),ylabel('Channel Power[linear]');
title('Exponential Model');
axis([-10 140 0 0.7])
legend('Ideal','Simulation')
%瑞利信道模型子程序,子程序程序名称:Ray_model.m
function H = Ray_model(L)
%输入参数:L为仿真信道个数,为200000
%输出参数:H为返回瑞利信道矩阵
H=(randn(1,L) + j * randn(1,L))/sqrt(2);%复信号
%产生实部为高斯分布、虚部为高斯分布、包络为瑞利分布的信道系数。实部功率为1/2,虚部功率为1/2,因此该执行指令返回单位功率或称归一化功率的瑞利信道幅度系数
%指数信道PDP子程序,子程序名称:exp_PDP.m
function PDP=exp_PDP(tau_d,Ts,A_dB,norm_flag)
%输入参数
%tau_d:RMS时延扩展,单位为s
%Ts:采样时间间隔,在这里也为指数信道路径间隔,单位为s
%A_dB:最小不可忽略径,单位为dB
%norm_flag:标准化标志
%输出参数:
%PDP:输出指数信道PDP矢量
if nargin<4,norm_flag=1;
end%判断子程序调用参数个数,小于4,则
%norm_flag=1
if nargin<3,A_dB=-20;
end%判断子程序调用参数个数,小于3,则A_dB=-20
%由于主程序中调用该子程序时只有两个参数,所以上两条语句实际是赋值norm_flag=1和A_dB=-20
sigma_tau=tau_d;%在指数衰减信道模型中,平均时延与方均根时延相等
A=10^(A_dB/10);%A=0.01
lmax=ceil(-tau_d*log(A)/Ts);%计算最大路径序号,参考式(2-35) ceil其实该函数就是表示向上取整的意思
%以下参见式(2-37)
if norm_flagp0=((1-exp(-(lmax+1)*Ts/sigma_tau))/(1-exp(-Ts/sigma_tau)))/30;
elsep0=1/sigma_tau;%计算式(2-38)中的P(0)
end
%指数信道PDP
l=0:lmax;
PDP=p0*exp(-l*Ts/sigma_tau);%参见式(2-38)
a)理想两径信通和瑞利两径信道的PDP曲线
b)离散指数信息和瑞利指数信道的PDP曲线
参考《MIMO-OFDM系统原理、应用及仿真》一书