本文主要是介绍无线通信路径损耗模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
接着上文的路径损耗模型,继续谈谈大尺度衰落中的常见模型
1.1.2 Okumura/Hata模型
在所有预测城市地区损耗的模型中,Okumura模型被采用得最多,适用于载波范围为500~1500MHz,小区半径为1~1000km,天线高度为30~1000m的移动通信系统。
Okumura模型路径损耗为
Amu(f,d)为频率f处的中等起伏衰减因子,GTx和GRx分别为接收和发射天线增益,G_AREA为具体地区环境增益,一般都可从实测得到的经验图中查找。
Hata模型是目前使用最广泛的模型,市区环境路径损耗为
对于中等范围,CRx取值为
对于大的范围,CRx取决于载波频率
郊区和开阔地,表示为
和
Hata路径损耗模型
function PL = PL_Hata(fc,d,htx,hrx,Etype)
%Hata模型
%输入
% fc:载波频率(Hz)
% d :基站和移动台之间的距离(m)
% htx:发射机高度(m)
% hrx:接收机高度(m)
% Etype:环境类型('urban','suburban','open area')
%输出
% PL:路径损耗(dB)
if nargin < 5Etype = 'URBAN';
end
fc = fc/(1e6);
if fc>=150 && fc<=200C_Rx = 8.29*(log10(1.54*hrx))^2-1.1;
elseif fc>200C_Rx = 3.2*(log10(11.75*hrx))^2 -4.97; %大范围,式(1.9)
else C_Rx = 0.8+(1.1*log10(fc)-0.7)*hrx-1.56*log10(fc)%中等范围,式(1.8)
end
PL = 69.55+26.16*log10(fc)-13.82*log10(htx)-C_Rx+(44.9-6.55*log10(htx))*log10(d/1000) %式(1.7)
EType = upper(Etype);
if EType(1) == 'S'PL = PL-2*(log10(fc/28))^2-5.4;
elseif EType(1) == 'O'PL =PL+(18.33-4.78*log10(fc))*log10(fc)-40.97;
end
end
设置参数,画图
% plot_PL_Hata.m
clear all
clc
fc = 1.5e9;
htx = 30;
hrx = 2;
distance = [1:2:31].^2;
y_urban = PL_Hata(fc,distance,htx,hrx,'urban');
y_suburban = PL_Hata(fc,distance,htx,hrx,'suburban');
y_open = PL_Hata(fc,distance,htx,hrx,'open');
semilogx(distance,y_urban,'k-s',distance,y_suburban,'k-o',distance,y_open,'k-^')
title(['Hata PL model,f_c=',num2str(fc/1e6),'MHz'])
xlabel('distance(m)'),ylabel('Path loss(dB)')
legend('urban','suburban','open area')
grid on,axis([1 1000 40 110])
结果图
1.1.3 IEEE802.16d 模型
IEEE802.16d 模型属于对数正态阴影路径损耗模型,
修正模型:
MATLAB程序:
IEEE802.16模型:
function PL = PL_IEEE80216d(fc,d,type,htx,hrx,corr_fact,mod)
% IEEE802.16d 模型
% 输入:
% fc: 载波频率(Hz)
% d : 基站和移动台间的距离(m)
% type: 选择'A','B'或'C'
% htx: 发射机高度(m)
% hrx: 接收机高度(m)
% corr_fact: 如果存在阴影,设置为'ATnT'或'Okumura'。否则,设置为'NO'
% mod: 设置为'mod'来得到修正的IEEE802.16模型
% 输出:
% PL: 路径损耗(dB)
Mod = 'UNMOD';
if nargin > 6Mod = upper(mod);
end
if nargin == 6 && corr_fact(1) == 'm'Mod = 'MOD';corr_fact = 'NO';
elseif nargin < 6corr_fact = 'NO';if nargin == 5 && hrx(1) == 'm'Mod = 'MOD';hrx = 2;elseif nargin < 5 hrx = 2;if nargin == 4 && htx(1) == 'm'Mod = 'MOD';htx = 30;elseif nargin < 4htx = 30;if nargin == 3 && type(1) == 'm'Mod = 'MOD';type = 'A';elseif nargin < 3type = 'A';endendend
end
d0 = 100;
Type = upper(type);
if Type~='A'&&Type~='B'&&Type~='C'disp('Error:The selected type is not supported');return;
end
switch upper(corr_fact)case 'ATNT'PLf = 6*log10(fc/2e9); %式(1.13)PLh = -10.8*log10(hrx/2);%式(1.14)case 'OKUMURA'PLf = 6*log10(fc/2e9); %式(1.13)if hrx <= 3C_Rx = -10*log10(hrx/3);%式(1.15)elseC_Rx = -20*log10(hrx/3)endcase 'NO'PLf = 0;PLh = 0;
end
if Type == 'A'a = 4.6; %式(1.13)b = 0.0075;c = 12.6;
elseif Type == 'B'a = 4;b = 0.0065;c = 17.1;
elsea = 3.5;b = 0.005;c = 20;
end
lamda = 3e8/fc;
gamma = a-b*htx+c/htx;%式(1.12)
d0_pr = d0;
if Mod(1) == 'M'd0_pr = d0*10^-((PLf+PLh)/(10*gamma))%式(1.17)
end
A = 20*log10(4*pi*d0_pr/lamda)+PLf+PLh;
for k = 1:length(d)if d(k) > d0_prPL(k) = A+10*gamma*log10(d(k)/d0) %式(1.18)else PL(k) = -10*log10(lamda/(4*pi*d(k))^2);end
end
end
绘制图像:
% plot_PL_IEEE80216d.m
clear all
clc
fc = 2e9;
htx = [30 30];
hrx = [2 10];
distance = [1:1000];
for k = 1:2y_IEEE16(k,:) = PL_IEEE80216d(fc,distance,'A',htx(k),hrx(k),'atnt');y_MIEEE16(k,:) = PL_IEEE80216d(fc,distance,'A',htx(k),hrx(k),'atnt','mod')%修正模型
end
subplot(1,2,1)
semilogx(distance,y_IEEE16(1,:),'k','linewidth',1.5),hold on
semilogx(distance,y_IEEE16(2,:),'r','linewidth',1.5),hold on
title(['IEEE 802.16d Path loss Models,f_c=',num2str(fc/1e6),'MHz'])
axis([1 1000 10 150])
xlabel('Distance(m)'),ylabel('Pathloss(dB)')
legend('h_{Tx}=30m,h_{Rx}=2m','h_{Tx}=30m,h_{Tx}=10m')subplot(1,2,2)
semilogx(distance,y_MIEEE16(1,:),'k','linewidth',1.5),hold on
semilogx(distance,y_MIEEE16(2,:),'r','linewidth',1.5),hold on
title(['Modified IEEE 802.16d Path loss Models,f_c=',num2str(fc/1e6),'MHz'])
axis([1 1000 10 150])
xlabel('Distance(m)'),ylabel('Pathloss(dB)')
legend('h_{Tx}=30m,h_{Rx}=2m','h_{Tx}=30m,h_{Tx}=10m')
结果图:
#博主学习MIMO-OFDM所做的学习笔记
这篇关于无线通信路径损耗模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!