function object = setMPGPara(object, fc, BSPosition, MSPosition, BSHeight,...
MSHeight, RoadsWidth, RoadOrientation, BuildingHeight, BuildingSeparation)
% 计算MPG的幅度、延时、相位、入射角、多普勒频移
% Reference:
% [1]Comparison and Implementation of the Directional Geometric-Stochastic
% Based Channel Model
% [2]The COST259 Directional Channel Model-Part I: Overview and
% Methodology
% [3]The COST 259 Directinal Channel Model-PartII: Macrocells
% [4]A Stochastic Model of the Temporal and Azimuthal Dispersion Seen
% at the Base Station in Outdoor Propagation Environments
% -t_add分布:[1]eq(10),laplacian分布
% Note:
% (1)下行信道,电磁波方向从BS到MS(上行信道到达角方向不同)
% (2)由于没有关于BS处角度扩散的信息,每个MPG的DOD与cluster中心一致
% (3)没有对DOD,DOA的仰角做具体的建模,因此仰角信息有可能不准确
% (4)对于LOS路径损耗建模为自由空间的路径损耗,没有考虑转移函数[3]
% 输入参数:
% object = 类的对象
% fc = 载波频率
% BSPosition = 基站位置坐标,参考坐标系
% MSPosition = 移动台位置坐标,参考坐标系
% BSHeight = 基站天线高度
% MSHeight = 移动台天线高度
% RoadsWidth = 道路宽度,单位m
% RoadOrientation = 道路方向(针对于直射路径),单位度,[0, 90]
% BuildingHeight = 建筑物平均高度,单位m
% BuildingSeparation = 建筑物间距,单位m
% 输出参数:
% object = 类的对象
% 作者:金乐(SEU,2007.10.14)
% *************************************************************************
% 配置全局变量(GPs)
c = 3*10^8;
MPG_NUM_PER_CLUSTER = 6; % 每个cluster的MPG数目
G = [1 -0.75 -0.75; -0.75 1 0.5; -0.75 0.5 1]; % 时延扩散,角度扩散,阴影衰落[1]eq(4)
Sshf = 6; % shadow fading, [3]Table IX
Ss_psi = 3; % elevation spread, [3]Table IX
L_E = 8; % 参考文献中未给出该参数,暂设为此值
epsilon = 0.5; % delay spread, [3]Table IX
Ss_tau = 3; % delay spread, [3]Table IX
switch object.REType
case 1 % GTU
m_s_psi = 10*pi/180; % elevation spread, [3]Table IX
m_s_tau = 0.4; % delay spread, [3]Table IX, 单位us
r_DS = 1.7;
r_AS = 1.3;
case 2 % GRA
m_s_psi = 5*pi/180;
m_s_tau = 0.1;
r_DS = 1.4;
r_AS = 1.2;
case 3 % GBU
m_s_psi = 10*pi/180;
m_s_tau = 0.4;
r_DS = 1.7;
r_AS = 1.3;
case 4 % GHT
m_s_psi = 5*pi/180;
m_s_tau = 0.1;
r_DS = 1.4;
r_AS = 1.2;
end
% *************************************************************************
ClusterNum = length(object.ActiveFC)+1; % far cluster + near cluster
MPGNum = MPG_NUM_PER_CLUSTER*ClusterNum;
object.MPGPara = zeros(MPGNum+1, 7); % 第一行存放LOS的参数,若LOS不存在,则为0
IndexFC = object.ActiveFC;
% 计算cluster处的距离,角度, 延时
s_CL = zeros(ClusterNum, 1); % cluster center处的路径长度,单位m
s_MS_CL = zeros(ClusterNum, 1); % cluster center与BS间的距离,单位m
s_BS_CL = zeros(ClusterNum, 1); % cluster center与MS间的距离,单位m
theta_BS_CL = zeros(ClusterNum, 1); % BS与cluster center的水平角(downlink), 单位弧度
psi_BS_CL = zeros(ClusterNum, 1); % BS与cluster center的仰角(downlink),单位弧度
theta_MS_CL = zeros(ClusterNum, 1); % MS与cluster center的水平角(downlink),单位弧度
psi_MS_CL = zeros(ClusterNum, 1); % MS与cluster center的仰角(downlink),单位弧度
% near cluster
[psi_BS_CL(1) theta_BS_CL(1) s_CL(1)] = cart2sph(MSPosition(1)-BSPosition(1),...
MSPosition(2)-BSPosition(2), MSPosition(3)-BSPosition(3));
s_MS_CL(1) = s_CL(1);
theta_MS_CL(1) = theta_BS_CL(1);
psi_MS_CL(1) = psi_BS_CL(1);
% far cluster
if ClusterNum > 1
[psi_BS_CL(2:end) theta_BS_CL(2:end) s_BS_CL(2:end)] =...
cart2sph(object.FCPosition(IndexFC, 1)-BSPosition(1),...
object.FCPosition(IndexFC, 2)-BSPosition(2),...
object.FCPosition(IndexFC, 3)-BSPosition(3));
[psi_MS_CL(2:end) theta_MS_CL(2:end) s_MS_CL(2:end)] =...
cart2sph(MSPosition(1)-object.FCPosition(IndexFC, 1),...
MSPosition(2)-object.FCPosition(IndexFC, 2),...
MSPosition(3)-object.FCPosition(IndexFC, 3));
s_CL(2:end) = s_BS_CL(2:end) + s_MS_CL(2:end);
end
tau_CL = s_CL / c * 10^6; % cluster center处的延时, 单位为us
% 计算LOS参数
K0 = 0; % Ricean衰落因子
if object.LOSBeing == 1
% 计算LOS的path gain,建模为自由空间的路径损耗.[3]eq(11)
PathGain = (c/(4*pi*s_CL(1)*fc))^2;
% 计算LOS的PDDP,即因子K0,服从lognormal分布。标准差为6,均值由[3]eq(28)给出
K0 = 10^(((26-L_E)/6 + 6*randn)/10);
PDDP = K0/(1+K0);
object.MPGPara(1, :) = [PathGain tau_CL(1) theta_BS_CL(1)...
psi_BS_CL(1) theta_MS_CL(1) psi_MS_CL(1) PDDP];
else
object.MPGPara(1, 2) = tau_CL(1);
end
% 计算各个cluster的时延扩散,角度扩散,阴影衰落因子
% -CorrRandn = [shadowing azimuth_spread delay_spread;
% | | | ;
% | | | ]
C = chol(G);
CorrRandn = randn(ClusterNum, 3) * C;
S = 10.^(0.1*Sshf*CorrRandn(:, 1)); %shadowing gain, [3]eq(24), 每一例对应一个cluster
sigma_psi = m_s_psi * 10.^(0.1*Ss_psi*CorrRandn(:, 2)); % azimuth spread, [3]eq(25)
sigma_tau = m_s_tau * (s_CL/1000).^epsilon .* 10.^(0.1*Ss_tau*CorrRandn(:, 3)); % delay spread, [3]eq(26)
% 计算各个cluster的路径增益;大尺度衰落和阴影衰落
PathGain = setPathGain(object.REType, fc, s_CL, s_MS_CL, S, BSHeight,...
MSHeight, RoadsWidth, RoadOrientation, BuildingHeight, BuildingSeparation);
object.MPGPara(2:end, 1) = resample(PathGain, MPG_NUM_PER_CLUSTER);
% 为每个cluster的MPG产生延时, 超量延时服从指数分布
sigma_tau = resample(sigma_tau, MPG_NUM_PER_CLUSTER);
sigma_Delay = r_DS * sigma_tau;
tau_MPG = exprnd(sigma_Delay);
object.MPGPara(2:end, 2) = tau_MPG + resample(tau_CL, MPG_NUM_PER_CLUSTER);
% 为每个cluster的MPG产生DOD,DOA, 仅对DOA的水平角进行建模,服从高斯分布
sigma_psi = resample(sigma_psi, MPG_NUM_PER_CLUSTER);
sigma_AS = r_AS * sigma_psi;
psi_MPG = sigma_AS .* randn(MPGNum, 1);
object.MPGPara(2:end, 3) = resample(theta_BS_CL, MPG_NUM_PER_CLUSTER);
object.MPGPara(2:end, 4) = resample(psi_BS_CL, MPG_NUM_PER_CLUSTER);
object.MPGPara(2:end, 5) = resample(theta_MS_CL, MPG_NUM_PER_CLUSTER);
object.MPGPara(2:end, 6) = resample(psi_BS_CL, MPG_NUM_PER_CLUSTER) + psi_MPG;
% 为每个cluster的MPG产生功率延时角度分布PDDP
PDDP = 1 ./ sigma_tau .* exp(-tau_MPG./sigma_tau) .*...
1 ./ (sqrt(2)*sigma_psi) .* exp(-sqrt(2)*abs(psi_MPG)./sigma_psi);
% 对各个cluster的PDDP归一化
for i = 1:6:MPGNum
PDDP(i:i+5) = PDDP(i:i+5)/sum(PDDP(i:i+5));
end
PDDP(1:6) = 1 / (1+K0) * PDDP(1:6); % 对near cluster可能存在LOS,需要修正
object.MPGPara(2:end, 7) = PDDP;
%**************************************************************************
%************ 子 函 数 **********
%**************************************************************************
function PathGain = setPathGain(REType, fc, s_CL, s_MS_CL, S, BSHeight,...
MSHeight, RoadsWidth, RoadOrientation, BuildingHeight,...
BuildingSeparation)
% 计算路径增益:大尺度衰落和阴影衰落
% [3]eq(11)
switch REType
case 1 % GTU
Rc = 100;
Lc = 20;
case 2 % GRA
Rc = 300;
Lc = 20;
case 3 % GBU
Rc = 100;
Lc = 20;
case 4 % GHT
Rc = 300;
Lc = 20;
end
c = 3*10^8;
PathGain = zeros(length(s_CL), 1);
tau = s_CL / c * 10^6;
% 计算P_NLOS
switch REType
case {1 3} % COST-231-Walfisch-Ikegami模型
L_FS = 32.45 + 20*log10(fc/10^6) + 20*log10(s_CL/1000);
if RoadOrientation < 35 % RoadOrientation范围[0 90];
Lori = -10 + 0.354*RoadOrientation;
elseif RoadOrientation < 55
Lori = 2.5 + 0.075*(RoadOrientation-35);
else
Lori = 4.0 - 0.114*(RoadOrientation-55);
end
Lrts = -16.9 - 10*log10(RoadsWi
没有合适的资源?快使用搜索试试~ 我知道了~
IMMKF.rar_TDOA粒子滤波_kf 均衡_卫星测距_基于TDOA的定位_无线信道估计
共45个文件
m:37个
png:4个
fig:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 178 浏览量
2022-07-15
17:04:03
上传
评论 1
收藏 98KB RAR 举报
温馨提示
这是研究生毕业论文做的项目——基于粒子滤波和卡尔曼滤波的卫星定位技术。附件中包含了无线信道估计和均衡、TDOA测距、IMM-KF滤波的所有程序,希望对从事无线定位技术的开发人员有帮助。独家奉献。
资源详情
资源评论
资源推荐
收起资源包目录
IMMKF.rar (45个子文件)
IMMKF
gen_mean_ROS_noise.m 824B
TDOA_Chan.m 3KB
KF.m 482B
test.m 519B
taylor.m 658B
location_IMMKF.m 5KB
gen_mean_Guassin_noise.m 776B
test_IMMKF1.m 1KB
test_IMMKF_Scatter.m 2KB
gen_mean_cost259.m 5KB
test_pdf_DOS.m 458B
wrong_measure_noise.fig 19KB
IMMKF.m 3KB
location_KF.m 4KB
test_IMMKF_T1P1.m 2KB
test_IMMKF.m 2KB
compare.fig 28KB
CHAN.M 673B
IMMKF_scatter.m 3KB
html
test_IMMKF_T1P1_02.png 4KB
test_IMMKF_T1P1_03.png 4KB
test_IMMKF_T1P1_01.png 5KB
test_IMMKF_T1P1.html 188KB
test_IMMKF_T1P1.png 2KB
var_DOS.m 718B
test_IMMKF_259.m 2KB
Test_TDOA_Chan.m 5KB
@MacrocellChannel
setLOSBeing.m 1KB
setMPGCoef.m 2KB
MacrocellChannel.m 2KB
passChannel.m 675B
setActiveFC.m 973B
setMPGPara.m 10KB
display.m 395B
get.m 809B
setActiveCluster.m 992B
placeCR.m 3KB
normal.m 215B
test_normal.m 477B
RMSE_P.fig 4KB
functionR1.m 396B
gen_mean_DOS_noise.m 761B
Channel.m 751B
fang.m 379B
test_KF.m 2KB
共 45 条
- 1
钱亚锋
- 粉丝: 86
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0