仿真频率选择性信道可以非为两个步骤:
(1)先利用MED、MEA、MCM、MSEM、MEDS、JM和JM改进型方法仿真出多个可分辨径,需保证各个可分辨径之间相互独立。因此注意以上方法中有随机相位的可以认为每次产生的径是独立的,而缺少随机相位的则必须引进fade counter变量,引入时间偏移,以产生独立的径。
(2)在各可分辨径上乘以相应的系数a,加上相应的离散传播时延tau,然后将各个不同可分辨径相加即可得到多径衰落信道。下面给出主要的几种生成平坦衰落信道模型的方法。先列出程序,等以后有时间将每种方法的原理整理出来。
%
%
%
%
sigma=sqrt(1/2);%rayleigh分布pdf的参数,用于归一化
c=3*10^8;%光速(m/s)
fm=(fc*10^6)*(v*10^3/3600)/c;%最大多普雷频移
wd=2*pi*fm;%角频率
[rowcol]=size(input);
len=row*col;t=1:len;t=t*dt;
%t=time_start:1/fs:time_end;%时间向量
factor=sqrt(2/M);%归一化因子
xc=0;xs=0;
for n=1:M
end
channel=sigma*(xc+i*xs);%合成信道响应并归一化
function[channel]=Rayleigh_singlePath2(fc,v,time_start,time_end,dt)
%---------------------------------------------------------
%
%
%
%
%
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=32;%生成单径的正弦波数目
c=3*10^8;fs=1000/dt;sigma=sqrt(1/2);fm=(fc*10^6*v*10^3/3600)/c;
t=time_start:1/fs:time_end;
n=1:N;
fn=fm*sin(pi*n/2/N);cn=sigma*sqrt(2/N);
channel=zeros(1,length(t));phase=unifrnd(0,2*pi,1,N);k=0;
fort=time_start:1/fs:time_end
end
%Monte Carlo法:MCM方法
function[channel]=Rayleigh_singlePath5(fc,v,time_start,time_end,dt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=32;%生成单径的正弦波数目
c=3*10^8;fs=1000/dt;sigma=sqrt(1/2);fm=(fc*10^6*v*10^3/3600)/c;
t=time_start:1/fs:time_end;n=1:N;
fn=fm*sin((n-0.5)*pi/(2*N));
cn=sigma*sqrt(2/N);
channel=zeros(1,length(t));k=0;
phase=unifrnd(0,2*pi,1,N);
fort=time_start:1/fs:time_end
end
%Jakes仿真法:JM方法,原始的公式
function[channel]=Rayleigh_singlePath6(fc,v,time_start,time_end,dt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=32;%生成单径的正弦波数目
c=3*10^8;fs=1000/dt;sigma=sqrt(1/2);fm=(fc*10^6*v*10^3/3600)/c;
t=time_start:1/fs:time_end;n=1:N;
fn=fm*cos(2*pi*n/N);wc=2*pi*fc;
cn=sqrt(2/N);
channel=zeros(1,length(t));k=0;
phase=2*pi*rand(1,N)-pi;
end
channel=sigma*channel;
%Jakes仿真改进型法:JM改进型方法
function[channel]=Rayleigh_singlePath7(fc,v,time_start,time_end,dt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N0=16;%生成单径的正弦波数目
N=4*N0+2;c=3*10^8;fs=1000/dt;fm=(fc*10^6*v*10^3/3600)/c;
t=time_start:1/fs:time_end;n=1:N0;
wc=2*pi*fc;beta=pi*n/N0;
fn=fm*cos(2*pi*n/N);factor=2/sqrt(N);
xc=zeros(1,length(t));xs=zeros(1,length(t));k=0;
%改进型引入随机相移
%phase=2*pi*rand(1,N0+1)-pi;
phase=unifrnd(0,2*pi,1,N);
fortt=time_start:1/fs:time_end
end
channel=xc.*cos(wc*t)+xs.*sin(wc*t);
channel=factor*channel;
%滤波器法:filter
function[channel]=Rayleigh_singlePath_filter(fc,v,time_start,time_end,dt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dt=1;c=3*10^8;fs=1000/dt;fc=2000;v=30;fm=(fc*10^6*v*10^3/3600)/c;%参数设定
t=time_start:1/fs:time_end; %抽样时刻
N=length(t);%抽样点数
Ninv=2^nextpow2(N);%做FFT的点数
Ns=2^nextpow2(ceil(Ninv*2*fm/fs));%2*fd内的采样点数
deltaf=2*fm/(Ns-1);T=1/deltaf; %频率间隔和周期
f=deltaf:deltaf:fm; %频率点向量
Sf0=1.5/(pi*fm);Sfn=Sf0./sqrt((1-((f/fm).^2))); %多普勒功率谱(基带)
Sf=[fliplr(Sfn),Sf0,Sfn]; %频谱翻转
plot(0:deltaf:2*fm-deltaf,Sf),grid on
I0=randn(1,Ns-1);Q0=randn(1,Ns-1); %产生高斯白噪声
I0_fft=fft(I0);Q0_fft=fft(Q0); %两路支路做FFT变换
I_freq=I0_fft.*Sf;Q_freq=Q0_fft.*Sf;
I_temp =[I_freq(1:(Ns+1)/2),zeros(1,Ninv-Ns+2),I_freq((Ns+1)/2+1:Ns-1)];%填充0.已进行FFT并使曲线平滑
Q_temp =[Q_freq(1:(Ns+1)/2+1),zeros(1,Ninv-Ns+2),Q_freq((Ns+1)/2+2:Ns-1)];
I_time =ifft(I_temp);Q_time = ifft(Q_temp); %两支路转化为时域
channel0=real(I_time)+i*imag(Q_time); %相加合并
channel=channel0(1:N);
rms=sqrt(norm(channel,'fro'));%归一化
channel=channel/rms;