1.算法概述
无线信道是移动通信的传输媒体,所有的信息都在这个信道中传输。信道性能的好坏直接决定着人们通信的质量,因此要想在有限的频谱资源上尽可能地高质量、大容量传输有用的信息就要求我们必须十分清楚地了解信道的特性。然后根据信道地特性采取一系列的抗干扰和抗衰落措施,来保证传输质量和传输容量方面的要求。对几种常用的信道模型进行了详细的理论分析,主要包括自由空间损耗模型,Okumura-Hata模型,COST231 Hata模型,最后对802.16规范中建议使用的SUI信道模型进行了详细的理论分析。针对每种信道的特点,我们采用MATLAB对所介绍的信道进行仿真。
Okumura-Hata模型,当频率范围在150Mhz至1500Mhz的范围内的时候,其表达式:
COST231 Hata模型应用频率在1 500MHz到2 000MHz之间,适用于小区半径大于1km的宏蜂窝系统,发射有效天线高度在30m到200m之间,接收有效天线高度在1m到10m之间。路径损耗计算的经验公式为:
SUI模型,为了仿真一个无线接收机接受信号强度的变化,我们需要知道:接收机所处的地理环境, 接收机到发射机的各个路径信号所受的影响,多普勒频偏等,即信道模型。对于频域单载波(SC-FDE) 技术,IEEE802.16主要规定其应用于11GHz以下的非视距(NLOS)固定无线接入( FWA),其典型的信道特征如下:
·蜂窝半径<1 0 k m,具有多样化的地形和植被密度;
·基站发送天线高1 5-4 0 m;
·接收天线高2~10 m,位于屋檐、窗口以下,或者是房顶高度的定向天线;
·高的蜂窝覆盖率(80%~90%)。
SUI模型基于AT&T的Wireless和Erceg等人的工作,Erceg将地形分成三种类型:
A类:最大路径衰落,适用于山地地形以及很大的植被密度,对应于信道模型SUI-5、SUI-6;
B类:中等路径衰落,适用于A、C描述之间的地形,对应于信道模型SUI-3、SUI-4;
C类:最小路径衰落,适用于平原地形以及极小的植被密度,对应于信道模型SUI-1、SUI- 2;
SUI模型对于各类衰落规定了具体的衰落公式,提出6种SUI模型的适用环境如下:
·蜂窝半径7 k m;
·基站发送天线高30m,接收天线高6m;
·基站发送天线波束宽度120度,接收天线波束宽度:全向(360)和(3 0);
·天线垂直极化;
·90%的蜂窝覆盖率,覆盖范围内99.9%的可信度。
2.仿真效果预览
matlab2022a仿真
3.MATLAB部分代码预览
N=10000;%独立随机数实现的数目
OR=20;%观察频率(Hz)
M=256;%多普勒滤波器的阶数
Dop_res=0.1;%SUI参数中的多普勒判决(Hz)(在重复采样进程中)
res_accu=20;%重复采样进程的精确度
%%%%%SUI信道参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tau=[0.0 0.4 0.9];%每个抽头的时延
Dop=[0.4 0.3 0.5];%最大多普勒频移参数
K=[4 0 0];%K因子
P=[0 -15 -20];%每一阶的功率衰减
ant_corr=0.4;%天线相关性
Fnorm=-1.5113;%增益归一化因子
%%%%%%%%%%%计算m的值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P = 10.^(P/10);%计算线性功率
s2 = P./(K+1); % 计算方差
m2 = P.*(K./(K+1)); % 计算常数功率
m = sqrt(m2); % 计算常数部分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rmsdel = sqrt( sum(P.*(tau.^2))/sum(P) - (sum(P.*tau)/sum(P))^2 );
fprintf('rms delay spread %6.3f μs\n', rmsdel);
%%%%%%%%%在特定功率下计算伦琴信道系数%%%%%%%%%%%%%%%%
L = length(P); % 阶数
paths_r = sqrt(1/2)*(randn(L,N) + j*randn(L,N)).*((sqrt(s2))' * ones(1,N)); %L*N矩阵每阶的数据噪声
paths_c = m' * ones(1,N);%常数部分
for p = 1:L
D = Dop(p) / max(Dop) / 2; % 归一化最大多普勒频移
f0 = [0:M*D]/(M*D); % 频率因子
PSD = 0.785*f0.^4 - 1.72*f0.^2 + 1.0; % PSD估计
filt = [ PSD(1:end-1) zeros(1,M-floor(2*M*D)) PSD(end:-1:2) ]; % S(f)
filt = sqrt(filt); %从S(f)到|H(f)|
filt = ifftshift(ifft(filt)); % 获得脉冲响应
filt = real(filt); % 寻找实数滤波器
filt = filt / sqrt(sum(filt.^2)); %归一化滤波器
path = fftfilt(filt, [ paths_r(p,:) zeros(1,M) ]);
paths_r(p,:) = path(1+M/2:end-M/2);
end;
paths = paths_r + paths_c;%路径输出数据
Pest = mean(abs(paths).^2, 2);
fprintf('tap mean power level: %0.2f dB\n', 10*log10(Pest));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SR = max(Dop)*2; % 精确采样率
m = lcm(SR/Dop_res, OR/Dop_res); %求最小公倍数
P = m/SR*Dop_res; % 分子
Q = m/OR*Dop_res; % 分母
paths_OR = zeros(L,ceil(N*P/Q)); % 创造新矩阵
for p=1:L
paths_OR(p,:) = resample(paths(p,:), P, Q, res_accu);
end;
Pest = mean(abs(paths_OR).^2, 2);
fprintf('tap mean power level: %0.2f dB\n', 10*log10(Pest));
paths_OR1=10*log10(paths_OR);
NN=length(paths_OR(1,:));
y1=abs(paths_OR).^2;
y2=10*log10(y1);%转换为dB
t=60;%时间长度
x=1:NN;
y=x/OR;
01-22m