无线信道特性分析及建模仿真
Posted 一只学习的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无线信道特性分析及建模仿真相关的知识,希望对你有一定的参考价值。
1 前言
我觉得真正理解无线信道特性并进行信道建模是一件不那么容易的事。
现在把我学习和总结的一些东西记录在这篇文章里,希望能够随着知识的积累和理解的深入,不断完善。
2 无线信道特性的数学表达
对于在CSDN中编辑数学公式比较麻烦,这里就直接截图粘贴笔记了。
(1)先考虑多径
(2)考虑多径的情况下,加入时变
3 无线信道特性分析
这里对信道特性的描述只限于小尺度衰落。
3.1 多径特性
3.1.1 时延功率谱
3.1.2 均方根时延扩展
3.1.3 信道相干带宽
3.1.4 根据多径特性对信道分类
根据信号带宽(信号符号周期)和信道相干带宽(信道相对时延)的关系,可以将信道分为平坦衰落信道和频率选择性衰落信道。
(1)平坦衰落信道
如果相对时延和信号带宽的倒数相比非常小时,此时移动信道的带宽大于发送信号的带宽,发送信号通过信道之后频谱特性保持不变,只有信号强度受到时变信道增益的影响发生变化。
(2)频率选择性衰落信道
当信号的带宽足够大时,在整个信号带宽内信道不能再被视为常数,信道延迟不能再近似忽略,此时信道被称为频率选择性衰落信道。
属于平衰落信道还是频率选择性信道,主要时看信道时延扩展信号周期之间的关系(或者说信道带宽与信号带宽的关系):如果信号时延扩展小于信号周期(或者说相干带宽大于信号带宽),则是平衰落信道。如果信号时延扩展大于信号周期(或者说相干带宽小于信号带宽),则是频率选择性衰落信道。
3.2 时变特性
3.2.1 多普勒谱
3.2.2 多普勒扩展和相干时间
3.2.3 根据时变特性对信道分类
根据信道相干时间 和所传输的数字基带信号的符号速率 相比较,来决定信号在信道传输中是受到了慢衰落还是快衰落。
(1)若信道的相干时间小于所传信号的符号速率 ,则在符号周期内,信道的冲激响应快速变化,称为快衰落信道;
(2)若信道的相干时间 大于所传信号的符号速率 ,则在符号周期内,信道的冲激响应保持不变,称为慢衰落信道。
4 无线信道matlab仿真
4.1 单径平坦型瑞利衰落信道仿真
4.1.1 瑞利衰落信道的定义
这里顺便提一下莱斯信道:
4.1.2 瑞利衰落信道生成方法
对于单径的瑞利衰落信道,信道增益是具有0均值的复高斯随机过程(它的功率谱密度称为多普勒谱)。对于多径的情况,通常假设径与径之间是不相关的,每一径的多普勒功率谱形状相同,但功率(方差)不同。我们想要仿真多径衰落信道,首先可以产生特定多普勒功率谱密度的瑞利随机过程。
有几种产生单径平坦型瑞利衰落信道的模型,Clark/Gans模型(滤波白噪声模型)、Jakes模型(正弦波叠加法)、改进的Jakes模型,这里主要介绍下Jakes模型的原理,有时间再介绍其它两种模型。
正弦波叠加法的基本思想是,根据中心极限定理,若干个独立同分布的随机变量的和服从高斯分布,因此多个不同频率的复正弦波叠加,则实部虚部均分别服从高斯分布,又两个高斯变量的平方和的根服从瑞利分布,因此包络服从瑞利分布。
4.1.3 瑞利衰落信道仿真
4.1.3.1 方法一:采用正弦波叠加法产生瑞利衰落信道
程序:
% plot_Jakes_Flat.m
%MIMO-OFDM Wireless Communications with MATLAB㈢ Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte Ltd
close all, clear all
% initial parameter
fd= 926;
Ts= 1e-6;
M= 2^12;
t= [0:M-1]*Ts;
f= [-M/2:M/2-1]/(M*Ts*fd);
Ns= 50000;
t_state= 0;
% channel generation
[h,t_state]=Jakes_Flat(fd,Ts,Ns,t_state,1,0);
% plotting
subplot(311), plot([1:Ns]*Ts,10*log10(abs(h))), axis([0 Ns*Ts -20 10])
title(['Channel Modeled by Jakes, f_d=',num2str(fd),'Hz, T_s=',num2str(Ts),'s']);
xlabel('time[s]'), ylabel('Magnitude[dB]')
subplot(323), hist(abs(h),50);
title(['Channel Modeled by Jakes, f_d=',num2str(fd),'Hz, T_s=',num2str(Ts),'s']);
xlabel('Magnitude'), ylabel('Occasions')
subplot(324), hist(angle(h),50);
title(['Channel Modeled by Jakes, f_d=',num2str(fd),'Hz, T_s=',num2str(Ts),'s']);
xlabel('Phase[rad]'), ylabel('Occasions')
% Autocorrelation of channel
temp=zeros(2,Ns);
for i=1:Ns
j=i:Ns; temp1(1:2,j-i+1)= temp(1:2,j-i+1)+[h(i)'*h(j); ones(1,Ns-i+1)];
end
k=1:M; Simulated_corr(k)= real(temp(1,k))./temp(2,k);
Classical_corr= besselj(0,2*pi*fd*t);
% Fourier transform of autocorrelation
Classical_Y= fftshift(fft(Classical_corr));
Simulated_Y= fftshift(fft(Simulated_corr));
% plotting
subplot(325)
plot(t,abs(Classical_corr),'b:', t,abs(Simulated_corr),'r:')
title(['Autocorrelation of Channel, f_d=',num2str(fd),'Hz'])
grid on, xlabel('delay \\tau [s]'), ylabel('Correlation')
legend('Classical','Simulated')
subplot(326)
plot(f,abs(Classical_Y),'b:', f,abs(Simulated_Y),'r:')
title(['Doppler Spectrum,f_d=',num2str(fd),'Hz'])
axis([-1 1 0 600]), xlabel('f/f_d'), ylabel('Magnitude')
legend('Classical','Simulated')
信道系数产生的函数:
function [h,tf]=Jakes_Flat(fd,Ts,Ns,t0,E0,phi_N)
% Inputs:
% fd : Doppler frequency
% Ts : sampling period
% Ns : number of samples
% t0 : initial time
% E0 : channel power
% phi_N : inital phase of the maximum doppler frequency sinusoid
% Outputs:
% h : complex fading vector
% t_state: current time
%MIMO-OFDM Wireless Communications with MATLAB㈢ Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte Ltd
if nargin<6, phi_N=0; end
if nargin<5, E0=1; end
if nargin<4, t0=0; end
if nargin<3, error('More arguments are needed for Jakes_Flat()'); end
N0=8; % As suggested by Jakes
N=4*N0+2; % an accurate approximation
wd=2*pi*fd; % Maximum doppler frequency[rad]
%t_state = t0;
%for i=1:Ns
% ich=sqrt(2)*cos(phi_N)*cos(wd*t_state);
% qch=sqrt(2)*sin(phi_N)*cos(wd*t_state);
% for k=1:N0
% phi_n=pi*k/(N0+1);
% wn=wd*cos(2*pi*k/N);
% ich=ich+2*cos(phi_n)*cos(wn*t_state);
% qch=qch+2*sin(phi_n)*cos(wn*t_state);
% end
% h1(i) = E0/sqrt(2*N0+1)*complex(ich,qch);
% t_state=t_state+Ts; % save last time
%end
t = t0+[0:Ns-1]*Ts; tf = t(end)+Ts;
coswt = [sqrt(2)*cos(wd*t); 2*cos(wd*cos(2*pi/N*[1:N0]')*t)]; % 侥 (2.32)
h = E0/sqrt(2*N0+1)*exp(j*[phi_N pi/(N0+1)*[1:N0]])*coswt;
%侥 (2.29) with (2.30),(2.31), and (2.32)
% discrepancy = norm(h-h1)
PS:如果对程序有不懂的,可以参考(https://zhuanlan.zhihu.com/p/336379619)的介绍。
仿真结果:
4.1.3.1 方法二:改进的Jakes谱模型产生单径平坦型瑞利衰落信道
仿真程序如下:
function [h]=rayleigh(fd,t)
%该程序利用改进的jakes模型来产生单径的平坦型瑞利衰落信道
%Yahong R.Zheng and Chengshan Xiao "Improved Models for
%the Generation of Multiple Uncorrelated Rayleigh Fading Waveforms"
%IEEE Commu letters, Vol.6, NO.6, JUNE 2002
%输入变量说明:
% fd:信道的最大多普勒频移 单位Hz
% t :信号的抽样时间序列,抽样间隔单位s
% h为输出的瑞利信道函数,是一个时间函数复序列
%假设的入射波数目
N=40;
wm=2*pi*fd;
%每象限的入射波数目即振荡器数目
N0=N/4;
%信道函数的实部
Tc=zeros(1,length(t));
%信道函数的虚部
Ts=zeros(1,length(t));
%归一化功率系数
P_nor=sqrt(1/N0);
%区别个条路径的均匀分布随机相位
theta=2*pi*rand(1,1)-pi;
for ii=1:N0
%第i条入射波的入射角
alfa(ii)=(2*pi*ii-pi+theta)/N;
%对每个子载波而言在(-pi,pi)之间均匀分布的随机相位
fi_tc=2*pi*rand(1,1)-pi;
fi_ts=2*pi*rand(1,1)-pi;
%计算冲激响应函数
Tc=Tc+cos(cos(alfa(ii))*wm*t+fi_tc);
Ts=Ts+cos(sin(alfa(ii))*wm*t+fi_ts);
end;
%乘归一化功率系数得到传输函数
h=P_nor*(Tc+j*Ts );
调用上述函数,产生不同最大多普勒频移下的单径平坦型瑞利衰落信道:
close all;
clc;
fd=10; %多普勒频移为10
ts=1/1000; %信道抽样时间间隔
t=0:ts:1; %生成时间序列
h1=rayleigh(fd,t); %产生信道数据
fd=20; %多普勒频移为20
h2=rayleigh(fd,t); %产生信道数据
subplot(2,1,1),plot(20*log10(abs(h1(1:1000))))
title('fd =10Hz时的信道功率曲线')
xlabel('时间');ylabel('功率')
subplot(2,1,2),plot(20*log10(abs(h2(1:1000))))
title('fd=20Hz时的信道功率曲线')
xlabel('时间');ylabel('功率')
产生的瑞利衰落信道功率曲线:
4.1.3.1 方法三:利用matlab自带的实现瑞利衰落信道的函数rayleighchan
格式1:chan = rayleighchan(ts,fd)
生成一个单径的瑞利衰落信道,ts是输入信号的采样周期(单位s),fd为最大多普勒频移(单位Hz)。
rayleighchan函数除了可以产生单径的平坦型瑞利衰落信道外,还可以产生频率选择性衰落信道(多径衰落信道),每一径是一个独立的瑞利衰落信道。按下述格式调用:
格式2:chan = rayleighchan(ts,fd,tau,pdb)
ts和fd的意义同前面相同,tau是每一径相对于第一径的时延(单位s),pdb是每一径相对第一径的平均增益(单位dB)。
参考资料:
《MIMO-OFDM无线通信技术及MATLAB实现》
《详解MATLAB/Simulink通信系统建模与仿真》
以上是关于无线信道特性分析及建模仿真的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB教程案例5常见无线通信信道的matlab模拟和仿真分析——自由空间损耗模型,Okumura-Hata模型以及COST231 Hata模型