基于MATLAB的无线信道的传播与衰落(附完整代码与分析)
目录
一. 一般路径损耗模型
1. 1自由环境下路径损耗
1. 2 考虑实际情况
1.3 考虑阴影衰落
二. 代码仿真与理解
(1)函数文件
(2)函数文件
(3)主运行文件
三. 运行结果及理解
3.1
3.2
3.3
一. 一般路径损耗模型
1. 1自由环境下路径损耗
根据著名的Friis公式,基站发射一个功率,用户得到的功率为:
其中,代表接收功率,
代表发射功率,
与
分别代表发射、接收天线增益,
为波长,d代表基站和用户之间的距离,L代表损耗系数
天线增益:衡量天线性能的标准之一,该值越大越好;
损耗系数:系统总存在损耗,L>1。如果是自由空间L=1;
在自由空间中,路径损耗定义为发射功率与接收功率的对数比值,可得:
1. 2 考虑实际情况
如果考虑实际环境,则需要引入损耗指数n(自由空间损耗指数为2),如下:
为参考距离,因实际情况而定,比如在小区半径为1km的宏蜂窝系统,参考距离大约为100m。通过该式子可以说明,障碍物越多,损耗指数越大,路径损耗也越大
| 环境 | 损耗指数 |
| 自由空间 | 2 |
| 市区蜂窝 | 2.7~3.5 |
| 市区蜂窝阴影 | 3~5 |
| 建筑物内视距传输 | 1.6~1.8 |
| 建筑物内障碍物遮挡 | 4~6 |
| 工厂内障碍物阻挡 | 2~3 |
1.3 考虑阴影衰落
由于周围环境会随着接收机的实际位置不同而改变,即使发射机到接收机之间的距离相同,每条路径也会具有不同的路径损耗。因此在更加真实的环境中,对数正态阴影将更为实用。对数正态阴影衰落模型为:
其中,代表均值为0,标准差为
的高斯随机变量
二. 代码仿真与理解
本节将配合代码,利用公式严格说明每行代码的意义。
(1)函数文件
%本函数文件用来构建自由空间路径损耗模型,输出PL,单位为dB
function PL=PL_free(fc,dist,Gt,Gr)
lamda=3e8/fc; %fc代表载波频率[Hz]
tmp=lamda./(4*pi*dist); %dist代表基站和用户之间的距离
if nargin>2, tmp=tmp*sqrt(Gt); %Gt代表发射机天线增益
end
if nargin>3, tmp=tmp*sqrt(Gr); %Gr代表接收机天线增益
end
PL=-20*log10(tmp);
本代码的理解如下:

(2)函数文件
%本函数用来产生正态阴影路径损耗
% 部分参数已在上一个函数文件说明
function PL=PL_logdist_or_norm(fc,d,d0,n,sigma)
lamda=3e8/fc;
PL=-20*log10(lamda/(4*pi*d0))+10*n*log10(d/d0); %n为路径损耗指数,d0为参考距离
if nargin>4PL=PL+sigma*randn(size(d)); %sigma为方差 单位dB
end
本代码的理解如下:

(3)主运行文件
%绘制图
clear all,clf,clc
fc=1.5e9; %载波频率为1.5✖10^9
d0=100; %参考距离为100m;
sigma=3; %标准差为3
distance=[1:2:31].^2; %距离从1m开始,间隔2m,一直到31m(注意每个值都会平方)
%发射天线与接收天线三个增益值
Gt=[1 1 0.5];
Gr=[1 0.5 0.5];
Exp=[2 3 6];
for k=1:3y_Free(k,:)=PL_free(fc,distance,Gt(k),Gr(k)); %遍历天线增益计算路径损耗y_logdist(k,:)=PL_logdist_or_norm(fc,distance,d0,Exp(k)); %遍历损耗指数计算路径损耗y_lognorm(k,:)=PL_logdist_or_norm(fc,distance,d0,Exp(1),sigma); %自由空间下,考虑正态阴影
end%自由空间下的路径增益
figure(1)
subplot()
semilogx(distance,y_Free(1,:),'k-o',distance,y_Free(2,:),'k-^',distance,y_Free(3,:),'k-s') %横轴为对数值,可维持曲线为直线
grid on, axis([1 1000 40 110])
title(['自由空间路径损耗,载波频率=',num2str(fc/1e6),'MHz']) %将载波频率值转换为数组显示到图上
xlabel('距离(米)'),ylabel('路径损耗[dB]')
legend('G_t=1,G_r=1','G_t=1,G_r=0.5','G_t=0.5,G_r=0.5')%考虑损耗指数的路径增益
figure(2)
subplot()
semilogx(distance,y_logdist(1,:),'k-o',distance,y_logdist(2,:),'k-^',distance,y_logdist(3,:),'k-s')
grid on, axis([1 1000 40 110]) %横轴范围1~1000,纵轴范围40~110
title(['考虑损耗指数路径损耗模型,载波频率=',num2str(fc/1e6),'MHz'])
xlabel('距离(米)'),ylabel('路径损耗[dB]')
legend('n=2','n=3','n=6')%考虑阴影衰落的路径损耗
figure(3)
subplot()
semilogx(distance,y_lognorm(1,:),'k-o',distance,y_lognorm(2,:),'k-^',distance,y_lognorm(3,:),'k-s')
grid on, axis([1 1000 40 110])
title(['考虑高斯阴影衰落的路径损耗模型,载波频率=',num2str(fc/1e6),'MHz,','\sigma=',num2str(sigma),'dB']) %此处sigma显示Latex格式
xlabel('距离(米)'),ylabel('路径损耗[dB]')
legend('路径1','路径2','路径3')
三. 运行结果及理解
本仿真一共有三个文件,两个函数文件,一个主运行文件。主运行文件会产生三个图。此处分别解释:
3.1

(1)因为将距离转换为了对数值,所以路径损耗关于距离形成的是一条直线;
(2)随着距离的增大,路径损耗也在变大;
(3)天线增益减小,路径损耗增大,接收功率变小;
(4)三个图形的载波频率均为1500MHz
3.2

(1)纵轴是从40dB开始的,所以导致直线有一部分被截断;
(2)随着距离的增大,路径损耗也在变大;
(3)天线增益固定为1,参考距离设定为100米(通常小区半径为1km的宏蜂窝系统,参考 距离大约就为100米;
(4)n=2对应自由空间,n=3通常为市区蜂窝,n=6通常为建筑物内障碍物遮挡;
(4)障碍物增多,损耗指数n变大,路径损耗增大;
3.3

(1)引入高斯随机量后,曲线非单一直线;
(2)由于随机量每次产生略有不同,图形可能会发生略微差异,但影响不大;
(3)整体上,随着距离的增大,路径损耗也在变大。但由于高斯阴影的影响,部分位置会出现距离增大,但路径损耗减小的现象;
(4)在确定性的对数路径损耗模型上叠加了阴影产生的随机效应(在图2上叠加随机量)
相关文章:
基于MATLAB的无线信道的传播与衰落(附完整代码与分析)
目录 一. 一般路径损耗模型 1. 1自由环境下路径损耗 1. 2 考虑实际情况 1.3 考虑阴影衰落 二. 代码仿真与理解 (1)函数文件 (2)函数文件 (3)主运行文件 三. 运行结果及理解 3.1 3.2 3.3 一. …...
SDX62如何查看Kernel版本和Operating System Version Patch Level
Kernel版本号方法一:adb shell登录,然后执行uname -a# uname -aLinux sdxlemur 5.4.180-perf #1 PREEMPT Fri Mar 3 04:24:42 UTC 2023 armv7l GNU/Linux方法二:内核源码查看,apps_proc/src/kernel/msm-5.4/Makefile 文件…...
001+limou+HTML——(1)HTML入门知识
000、本人编写前言 前言:本笔记来源于莫振杰的书《HTML、CSS、Javascript从零到一快速上手》,经过修改制成的自学笔记,本书很适合小白学习入门web的相关知识,你也可以先看看我从中学到了什么,再考虑是否去认真学习这本…...
使用Arduino Uno构建一个巡线机器人
使用Arduino Uno构建一个巡线机器人 原文 MX 巡线机器人(**LFR)**是一种简单的自主引导机器人,它遵循在地面上绘制的线来检测白色表面上的暗线或黑暗表面上的白线。在本教程中,使用 Arduino Uno 和一些易于访问的组件构建黑线跟…...
【C++】类和对象(收尾)
文章目录成员变量初始化问题初始化列表explicit关键字static成员特性:友元友元函数友元类内部类特性匿名对象成员变量初始化问题 在创建对象时,编译器通过调用构造函数,给了对象中各个成员变量一个合适的初始值。但是这并不能够称为对对象中成…...
Linux延迟操作
一、软中断Linux内核中定义了如下几种软中断:enum {HI_SOFTIRQ0,TIMER_SOFTIRQ,NET_TX_SOFTIRQ,NET_RX_SOFTIRQ,BLOCK_SOFTIRQ,IRQ_POLL_SOFTIRQ,TASKLET_SOFTIRQ,SCHED_SOFTIRQ,HRTIMER_SOFTIRQ,RCU_SOFTIRQ, /* Preferable RCU should always be the last soft…...
np.insert()函数用法
目录insert()函数定义程序举例说明行插入列插入多数值行插入完整的程序和显示结果:insert()函数定义 insert(arr, obj, values, axisNone) 参数说明: arr : 需要插入的数组,即Input array; obj:向数组中插入值的位置…...
学习笔记-架构的演进之容器的封装-3月day06
文章目录前言封装应用的Dockerwhy Docker not LXC?附前言 当文件系统、访问、资源都可以被隔离后,容器就已经具备它降生所需要的全部前置支撑条件了。为了降低普通用户综合使用 namespaces、cgroups 这些低级特性的门槛,2008 年 Linux Kernel 2.6.24 内…...
Gorm根据关系模型中的属性查询原模型数据
type ExamResult struct {gorm.ModelExamManagementID uintExamManagement ExamManagement json:"examManagement" // 一场考试,其中有试卷,有试题,有试题答案//MarkExamPaperRecord MarkExamPaperRecord //每一场考试对应的结…...
车载技术【USB接口】—Android配件协议AOA【AOA连接】
简述 AOA协议是Google公司推出的用于实现Android设备与外围设备之间USB通信的协议。该协议拓展了Android设备USB接口的功能,为基于Android系统的智能设备应用于数据采集和设备控制领域提供了条件。介绍了Android系统下USB通信的两种模式,并给出了USB配件…...
SpringBoot的基本概念和使用
文章目录一、什么是SpringBoot二、Spring Boot优点三、Spring Boot项目创建四、Spring Boot 配置文件1. yml语法2.properties与yml关系3.多系统的配置五、Spring Boot日志文件1.日志对象2.日志级别日志级别的设置System.out.println VS 日志的两个致命缺点3.日志持久化4.更简单…...
基于计算机软件技术的化工设计特点
2.1 便利性将计算机软件技术应用于化工设计环节,最大的优点就在于提升了化工企业生产的便利性。化工设计作为化工生产的基础,在化工设计环节需要到有关化学反应和工艺流程设计等的相关问题,通过利用计算机软件技术可以为上述工作提供很好的辅…...
Nativefier把网页打包成exe
前要: 今天遇到一个需求,之前的应用都是用的h5挂载在企业微信的小应用,但是现在需要电脑运行的exe安装包! 所以需要用到nativefier导报工具:nativefier是一个使用electron将网页转换为app的插件,写这篇博客…...
STM32U5开发(1)----通过 USART1 发送数据
概述 通过 USART1 发送一些数据。 最近在弄ST和GD的课程,需要样片的可以加群申请:6_15061293。 生成例程 使用STM32CUBEMX生成例程,这里使用NUCLEO-U575ZI开发板。 选择工程的时候,先不必选择加载了TrustZone。 样品申请 h…...
20230308 Apdl lsdyna两杆撞击案例学习笔记
本次模拟使用的是ANSYS 16.0 一、设置Element type 首先打开APDL界面 添加element type 在LS-DYNA Explicit选择条件下,选择3D solid 164 二、设置材料类型 选择material models 选择Elastic-Isotropic-输入 Density:密度 EX:杨氏模量 NUXY:泊松比 三、几何模型建…...
互相关延时估计 Matlab仿真
文章目录互相关延时估计什么是互相关延时估计?原理代码实现总结互相关延时估计 互相关延时估计是一种信号处理技术,用于计算两个信号之间的时间延迟。在本篇博客中,我们将使用MATLAB来实现互相关延时估计,并提供多个例子和代码&a…...
谷歌插件Fetch在不同页面之间Cookie携带情况详解
content script 和 script inject 表现情况 在碰到content script 注入和用script标签注入一样,即使服务端有写入Cookie到域名下在该tab标签应用下也不会被保存,所以在发送时也无法自动携带,所以通过content script和<script>这种方式…...
Vue学习笔记(8)
8.1 组件自定义事件 在 Vue 中,组件可以通过自定义事件来实现组件之间的通信。自定义事件可以让一个组件触发一个事件,并向其他组件传递数据。以下是自定义事件的实现步骤: 在组件中定义一个事件名:可以在组件中使用 $emit 方法来…...
知道一个服务器IP应该怎么进入
首先我是国内,访问国外的网站比如谷歌等,访问特别慢,有时候甚至登录不进去。现在知道了一个台湾或者国外的服务器应该怎么登录进去呢?知道服务器IP之后,你还需要知道服务器的远程端口帐号密码才能登录的。知道上面信息…...
【计算机基础】Socket IO
一、I/O 模型 一个输入操作通常包括两个阶段: 等待数据准备好从内核向进程复制数据 对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
