Python实现仿真双径效应的方法

多径效应

多径效应(multipath effect):指电磁波经不同路径传播后,各分量场到达接收端时间不同,按各自相位相互叠加而造成干扰,使得原来的信号失真,或者产生错误。比如电磁波沿不同的两条路径传播,而两条路径的长度正好相差半个波长,那么两路信号到达终点时正好相互抵消了(波峰与波谷重合)。通常采用一些近似方法来描述信号的传播特性,其中最常见的一种近似方法是射线跟踪计算。射线跟踪模型将波前近似为简单粒子,进而确定出反射和折射对波前的影响。最简单的射线跟踪模型是双径模型,指发射机和接收机之间只存在一条直射路径和一条反射路径的情况。双径模型中的反射信号一般为地面反射,对于高速公路以及乡村道路和水面上的信号传播来说,双径模型是一种很好的近似,能够准确地反映信号的传播特性。

双径模型

双径模型用在单一的地面反射波在多径效应中起主导作用的情形,如下图所示是双径模型的示意图。接收信号由两部分组成:经自由空间达到接收端的直射分量和经过地面反射到达接收端的反射分量。

双径模型中的接收信号为:

Pt为发射功率,Gt为自射天线增益乘积GaGb,Gr为反射路径天线增益乘积GcGd,l为直射的路径,x0+x1为反射的路径,△φ为反射路径和直射路径的相位差,△φ=2Π(x0+ x1-l)/λ,反射系数R≈0.9。

模型分析

假设通信频率为2000MHz,基站高度1m,手持终端高度为1m,l=18m,此时θ=actan(1/18x2) =6.353°,x0=x1=1/sin(6.353°)=9.0373m,△φ=360°x(x0 +x1-l)/λ=179°。入射波和反射波相差接近180°相位,相互抵消,这时候接收功率就出现了极小值。

按照上述的设定值,绘制4m-150m的接收功率图如下:

双径模型仿真程序

import numpy as np
import matplotlib.pyplot as plt

def Radiation( theta, kt=0.2):
    theta = theta+np.pi/2
    pi = np.pi
    gmax_t = (np.cos(2 * pi * kt * np.cos(pi / 2)) - np.cos(2 * pi * kt)) / np.sin(pi / 2)
    gain = (np.cos(2 * pi * kt * np.cos(theta)) - np.cos(2 * pi * kt)) / np.sin(theta) / gmax_t
    return gain**2
def multipath_effect():
    h_j = 1
    h_c = 1
    f = 2
    lamda = 0.3 / f
    x = []
    y = []
    for i in range(20, 1500):
        l = i / 10
        x.append(l)
        l_c = h_c / (h_j + h_c) * l
        l_j = h_j / (h_j + h_c) * l
        lx = (h_c ** 2 + l_c ** 2) ** 0.5 + (h_j ** 2 + l_j ** 2) ** 0.5
        ly = (l ** 2 + (h_c - h_j) ** 2) ** 0.5
        l_d = lx - ly
        phase = l_d / lamda * 2 * np.pi
        theta_z = np.arctan(abs(h_j - h_c) / l)
        theta_f = np.arctan(h_j / l_j)
        tmp = Radiation(theta_z) * Radiation(theta_z) / ly ** 2 + Radiation(theta_f) * Radiation(theta_f) / lx ** 2 * np.sin(phase)
        y.append(20 * np.log10(tmp))
    plt.plot(x, y, 'r-')
    plt.show()
multipath_effect()

到此这篇关于Python实现仿真双径效应的方法的文章就介绍到这了,更多相关Python 仿真双径效应内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现病毒仿真器的方法示例(附demo)

    最近新冠在神州大陆横行,全国上下一心抗击疫情.作为一枚程序员,我也希望可以为抗击疫情做出自己的贡献,钟院士一直劝说大家不要出门,减少人口间的流动.对此,我特意做了一个病毒仿真器,探询冠状病毒传播. 1. 仿真效果 仿真开始,一开始只有5个发病者,传播率为0.8,潜伏期为14天 由于人口的流动,以及医院床位的隔离,一开始病毒扩撒不是很速度 随着医院床位满了,隔离失败,加上人口的流动,病患数开始几何式的增加 2. 什么是仿真器 仿真器(emulator)以某一系统复现另一系统的功能.与计算机模拟系统

  • python 与HFSS联合仿真的教程讲解

    看了很多其他人写的,python与HFSS联合仿真的博客,但说实话,都没有说到点子上.今天,给大家说说我的思路. python与HFSS联合仿真,有3种思路.下边一一介绍. 第一种 在HFSS中,选择tools-->record script to file ,选择导出到py文件即可.HFSS就会将你接下来的操作,转换为代码. 而你以后使用的时候,只需要改一下参数就可以了. 需要注意的是,这个python不可以直接用python编译器运行的,因为ScripEnv库,是HFSS自己的库. 如果要仿

  • Python实现仿真双径效应的方法

    多径效应 多径效应(multipath effect):指电磁波经不同路径传播后,各分量场到达接收端时间不同,按各自相位相互叠加而造成干扰,使得原来的信号失真,或者产生错误.比如电磁波沿不同的两条路径传播,而两条路径的长度正好相差半个波长,那么两路信号到达终点时正好相互抵消了(波峰与波谷重合).通常采用一些近似方法来描述信号的传播特性,其中最常见的一种近似方法是射线跟踪计算.射线跟踪模型将波前近似为简单粒子,进而确定出反射和折射对波前的影响.最简单的射线跟踪模型是双径模型,指发射机和接收机之间只

  • python算法学习双曲嵌入论文方法与代码解析说明

    目录 1. 方法说明 损失函数 梯度下降 梯度求解 2. 代码训练过程 3. 结果表现 其他参考资料 本篇接上一篇:python算法学习双曲嵌入论文代码实现数据集介绍 1. 方法说明 首先学习相关的论文中的一些知识,并结合进行代码的编写.文中主要使用Poincaré embedding. 对应的python代码为: def dist1(vec1, vec2): # eqn1 diff_vec = vec1 - vec2 return 1 + 2 * norm(diff_vec) / ((1 -

  • Python编程实现双链表,栈,队列及二叉树的方法示例

    本文实例讲述了Python编程实现双链表,栈,队列及二叉树的方法.分享给大家供大家参考,具体如下: 1.双链表 class Node(object): def __init__(self, value=None): self._prev = None self.data = value self._next = None def __str__(self): return "Node(%s)"%self.data class DoubleLinkedList(object): def

  • 在双python下设置python3为默认的方法

    如何在双python下设置python3为默认 在C:\Program下举例 第一步安装好python2和python3后设置好环境变量 第二步去掉python2根目录下的python.exe文件,还有Scripts文件夹下的pip.exe文件 第二步复制python3根目录下的python3.exe文件新建python.exe,还有Scripts若不存在pip.exe,则复制pip3.exe新建pip.exe 执行结果如下,则说明配置成功 总结 以上所述是小编给大家介绍的在双python下设置

  • 一文带你了解Python中的双下方法

    目录 前言 1. init方法 2. 运算符的双下方法 2.1 比较运算符 2.2 算术运算符 2.3 反向算术运算符 2.4 增量赋值运算符 2.4 位运算符 3.字符串表示 4.数值转换 5.集合相关的双下方法 6.迭代相关的双下方法 7.类相关的双下方法 7.1 实例的创建和销毁 7.2 属性管理 7.3 属性描述符 8.总结 前言 大家在写 Python 代码的时候有没有这样的疑问. 为什么数学中的+号,在字符串运算中却变成拼接功能,如'ab' + 'cd'结果为abcd:而*号变成了重

  • python光学仿真实现光线追迹之空间关系

    目录 空间关系 相交判定 射线排序 线弧关系 点弧关系 空间关系 变化始于相遇,所以交点是一切的核心. 相交判定 首先考察一束光线能否打在某个平面镜上.光线被抽象成了一个列表[a,b,c],平面镜则被抽象成为由两个点构成的线段[(x1,y1),(x2,y2)].两条直线的交点问题属于初等数学范畴,需要先将线段转换成直线的形式,然后再求交点.但是两条直线的交点可能落在线段的外面,从而不具有判定的意义. 如果我们的光学系统中有大量的光学元件,那么如果有一种方法可以快速判断光线是否与光学元件有交点,将

  • python光学仿真面向对象光学元件类的实现

    光学元件类 平面反射镜是一种极为简单的模型,因为我们只需要考虑一个平面即可.但是除此之外的其他光学元件,可能会变得有些复杂:我们必须考虑光在入射面和出射面的行为. 这当然是一句废话,而且我们也有了一个初步的解决方案:将光学元件拆成前表面和后表面即可.如果光需要在光学元件中反射多次,那就将光学元件拆成需要反射次数的表面个数即可,完美而无脑. 这说明我们已经熟悉了程序员的思维,我们眼中的世界已经不再是一个所见即所得的世界,我们看到的是一个个抽象零部件的表现.但是也不要惊慌,程序员和正常人也未必有很大

  • 详解python中的json的基本使用方法

    在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env python #-*- coding:utf-8 -*- import json print json.load(open('kel.txt')) #deserialize string or unicode to python object j = json.loads(open('kel.txt

  • python获取当前计算机cpu数量的方法

    本文实例讲述了python获取当前计算机cpu数量的方法.分享给大家供大家参考.具体分析如下: 这里实际上返回的是计算机的cpu核心数,比如cpu是双核的,则返回2,如果双四核cpu,则返回8 from multiprocessing import cpu_count print(cpu_count()) 本机是四核电脑,返回结果:4 希望本文所述对大家的Python程序设计有所帮助.

  • python中解析json格式文件的方法示例

    前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 本文主要介

随机推荐