学生休息室

分享技术和现实生活中的例子,学生如何在他们的日常项目中使用MATLAB和Simulink # studentsuccess万博1manbetx

引导光束的现实:从相控阵波束形成

在今日的帖子里,力平从学生项目团队将分享她的经验在MATLAB和Simulink如何帮助学生理解无线通信理论在波束形成和预编码。万博1manbetx让我们看看她会分享。
当我把课程“无线通信原理”,我觉得这是很难集中在数学类课程材料以来充满了包括矩阵、随机过程、公式推导,等。工作之后在无线通信系统中如LTE和5克多年来,我发现理解基本概念和理论非常重要,因为他们是不同的应用程序的基础。
许多例子在MATLAB和参考应用程序可以帮助您理解复杂的无线通信理论。在这个脚本中,我将展示一个演示如何帮助你理解波束形成,这种技术已广泛应用于5克,甚至在6克、雷达、声纳、医学成像、数组和音频系统。

相控阵是什么?

要理解波束形成,首先需要知道梁是什么以及他们是如何形成的。简而言之,光束模式可以由相控阵,指多个元素,可以测量或发出电波。的元素排列在一些配置和共同行动来产生所需的光束模式。你可以引导光束通过调整阶段的信号没有身体移动数组每个元素。欲知详情,请观看布莱恩·道格拉斯的视频”相控阵是什么?”,他使用了很多动画来解释这个概念。
在无线通信中,元素的相控阵天线。道格拉斯的快照下面的视频,你可以看到正确的图的光束均匀各向同性天线的线性数组(ULA)”,从每个天线信号一直在叠加的信号强度得到了增强一些方向,虽然他们已经取消了其他方向。
snapshots.jpg
天线阵列的光束模式取决于设置包括天线数量的元素,元素之间的间距、阵列几何以及单个天线的模式。
传感器阵列分析仪在MATLAB软件为您提供了一个交互式工具建立一个天线阵列,其基本性能特点,想象它的光束模式在2 d或3 d空间。安装好后相控阵的工具箱在MATLAB中,您可以找到传感器阵列分析仪通过MATLAB将来发布的应用程序选项卡,然后通过搜索下“信号处理和通信”。你也可以打开应用程序使用下面的命令在MATLAB命令窗口。
sensorArrayAnalyzer
通过下面的例子时如何使用传感器阵列分析器,你注意到这个应用程序可以帮助与调优参数可视化相控阵的指向性图案,以及转向一个相控阵在一定的方向。与不同的转向向量,可以移动横梁不动数组。
sensorArrayAnalyzer.gif
现在你可能仍然好奇如何使用光束控制来提高无线通信系统的性能。答案是通过波束形成,计划pre-steer梁所需的方向!接下来的例子将向您展示如何做天线阵的波束形成,提高信噪比(信噪比)的无线链接。

波束形成怎么办?

天线阵列已经成为标准配置5 g的一部分。这种无线通信系统通常被称为Multiple-Input-and-Multiple-Output (MIMO)系统。显示多个天线的优点,我们假设一个无线链接部署在60 GHz,毫米波频率新考虑的5 g。
关闭所有;清晰;clc;
rng (0);%设置随机数生成器的种子
c = 3 e8;%传播速度
fc = 60 e9;%载波频率
λ= c / fc;%的波长
没有损失的普遍性,我们放置一个发射机在原点和接收机约1.6公里。
txcenter = (0, 0, 0);%发射机的中心
rxcenter = (1500; 500; 0);%接收中心
然后离去角(AoD)和到达角(AoA)可以计算基于发射机和接收机的中心位置。
[~,txang] = rangeangle (rxcenter txcenter);%大气气溶胶
[~,rxang] = rangeangle (txcenter rxcenter);% AoA
接下来,我们考虑两个代表通道类型。

视线通道

视距(LOS)传播是最简单的无线频道,经常发生在农村地区。并采用天线阵列在LOS传播可以增加接收机的信噪比,从而提高链接的比特误码率(BER) ?
作为基准,可以模拟的误码性能Single-Input-and-Single-output链接下一个洛杉矶的输出通道如下,其中scatteringchanmtx函数用来创建一个通道矩阵不同的传输和接收阵列配置。函数模拟多个散射之间的传输和接收阵列假设信号从传送阵的散射,然后反射散射到达接收数组。在这种情况下,每个散射体定义了一个信号通路之间的传输和接收数组,所以由此产生的通道矩阵描述了一个多路径环境。你可以阅读这个函数通过选择的细节,然后右击打开功能。
考虑这样一个输出通信链路,发射机和接收机只有一个天线位于节点中心,有一个直接的路径从发射机到接收机。这样一个洛杉矶通道可以建模为一个特例的多路径环境。
txsipos = (0, 0, 0);%发射机天线的位置
rxsopos = (0, 0, 0);%接收天线的位置
g = 1;%路径增益
sisochan = scatteringchanmtx (txsipos rxsopos、txang rxang, g);%生成一个输出洛杉矶通道
Nsamp = 1 e6;%采样率
x =兰迪([0 1]Nsamp 1);%的数据源
ebn0_param = 10:2:10;在dB %信噪比、单位
Nsnr =元素个数(ebn0_param);%的信噪比
ber_siso = helperMIMOBER (sisochan, x, ebn0_param) / Nsamp;%各行各业的误比特率(BER)
你有一个输出的误码性能洛杉矶链接。当调查的细节helperMIMOBER函数给出了辅助函数会话结束时,这个脚本,你应该注意BPSK调制被认为是在所有的情况下。
现在考虑一种链接。我们假设发射机和接收机与半波这种第4单元间距,
Ntx = 4;%发射天线的数量
Nrx = 4;%接收天线的数量
txarray = phased.ULA (“NumElements”Ntx,“ElementSpacing”λ/ 2);%的发射机天线阵
txmipos = getElementPosition (txarray) /λ;
rxarray = phased.ULA (“NumElements”Nrx,“ElementSpacing”λ/ 2);%接收机的天线阵
rxmopos = getElementPosition (rxarray) /λ;
与接收天线阵接收到的信号在接收机的数组元素是一致的,所以可以pre-steer接收阵列对发射机改善信噪比。此外,传感器也可以pre-steer向接收机天线阵的主光束进行进一步的改进。
txarraystv = phased.SteeringVector (“SensorArray”txarray,
“PropagationSpeed”c);
rxarraystv = phased.SteeringVector (“SensorArray”rxarray,
“PropagationSpeed”c);
wt =步骤(txarraystv、fc txang) ';
或者说是=连词(步骤(rxarraystv, fc rxang));
mimochan = scatteringchanmtx (txmipos rxmopos、txang rxang, g);
ber_mimo = helperMIMOBER (wt, mimochan x, ebn0_param wr) / Nsamp;
helperPlotSpatialMIMOScene (txmipos rxmopos、txcenter rxcenter,南wt, wr)
Beamforming_MIMO_LOS.jpg
与调制信号波束形成需要乘以wt之前在发射机发送,接收信号需要乘以或者说是之前在接收机解调。在使用了helperPlotSpatialMIMOScene函数可视化场景在上图中,你注意到主光束在发射机和接收机已经指着对方。
现在你可以比较输出的误码性能和MIMO情况下在《传播通道,
helperBERPlot (ebn0_param [ber_siso (:) ber_mimo (1:)。');
传奇(“输出洛”,“那洛”);
BER_LOS.jpg
的误码率曲线显示了传送阵和接收数组贡献6 dB数组分别获得,导致总12 dB的增益输出情况。
注意,假设下的增益实现发射机需要知道接收方的方向或位置,同时信号入射方向被接收者,在获得的角度通常是使用波达方向估计算法。

多路通道

在大多数情况下,无线通信在多径衰落环境中发生。剩下的这个例子探讨了相控阵如何帮助在这种情况下。
假设有10个随机散射通道,那么将会有10路径从发射机到接收机,见下面。
Nscat = 10;%的散射
[~,~,scatg scatpos] = helperComputeRandomScatterer (txcenter, rxcenter Nscat);
helperPlotSpatialMIMOScene (txmipos、rxmopos txcenter、rxcenter scatpos)
ScatteringChannel.jpg
为简单起见,假设信号沿着所有路径旅行到同一符号周期内,信道是频率平坦而不是频率选择性。
在这种多路径衰落信道,信道需要改变多个时段模拟误码率曲线。假设仿真持续1000帧,每一帧有10000位。基线的误码率曲线的输出链接下一个多路径通道可以模拟如下。
Nframe = 1 e3;%的帧数
Nbitperframe = 1 e4;%每帧的比特数
Nsamp = Nframe * Nbitperframe;%的数据样本总数
x =兰迪([0 1]Nbitperframe 1);%生成的源数据
Nsnr nerr = 0 (1);
m = 1: Nframe
sisompchan = scatteringchanmtx (txsipos rxsopos Nscat);
或者说是= sisompchan ' /规范(sisompchan);
nerr = nerr + helperMIMOBER (sisompchan x, ebn0_param 1 wr);
结束
ber_sisomp = nerr / Nsamp;
在输出情况下,如果你比较洛信道的信道矩阵的多路径通道,你可以注意到它包含单个元素和元素的值的变化从一个实数复数由于多路径衰落。在这种情况下,一个结合重量计算的或者说是= sisompchan ' /规范(sisompchan)可以使用在接收机改善信噪比。
在那情况下,误码率曲线可以模拟如下,diagbfweights函数用于计算预编码重量wp发射机和结合权重wc在接收方。您可以右键单击函数和打开它看到它的细节。
x =兰迪([0,1],Nbitperframe Ntx);
nerr = 0 (Nrx Nsnr);
m = 1: Nframe
mimompchan = scatteringchanmtx (txmipos rxmopos Nscat);
[wp, wc] = diagbfweights (mimompchan);
nerr = nerr + helperMIMOBER (wp, mimompchan x, ebn0_param wc);
结束
ber_mimomp = nerr / Nsamp;
了解预编码,结合权重计算,您首先需要了解奇异值分解(计算)。使用以下命令找到MATLAB计算文档。
帮助圣言会
简单地说,一个圣言([U, V] =圣言(X))产生一个对角矩阵年代相同的尺寸X在减少订单和非负对角元素,酉矩阵UVX = U * * V '。试着在MATLAB命令之后。
男朋友= wp * mimompchan * wc
[u, v] =圣言(mimompchan)
bf.jpg
s.jpg
比较男朋友年代现在,你知道diagbfweights函数是基于奇异值分解的。由于丰富的散射体环境,信道矩阵的MIMO多路径通道通常有满秩。
请注意,该产品wp * mimompchan * wc是一个对角矩阵,这意味着每一个收到的信息接收数组元素只是一个按比例缩小的版本的传输数组元素。这样一个MIMO多路径通道像原始的多个正交的子信道中通道。
因此,它可以同时发送多个数据流在MIMO多路径通道,叫做空间复用。空间多路复用的基本思想是独立的信道矩阵为多个模式,发送的数据流传输数组中不同元素可以独立从接收到的信号中恢复过来。空间多路复用的目的是减少对提高信噪比和提高吞吐量的信息。
现在你可以绘制误码率曲线的输出多路情况下,和前两个数据流在MIMO多路径的情况下。作为基准,你也画出误码率曲线的输出洛杉矶,已经从一节。
helperBERPlot (ebn0_param [ber_siso (:) ber_sisomp (:) ber_mimomp (1:)。:“ber_mimomp (2)。']);
传奇(“输出洛”,“输出路径”,“MIMO多路流1”,《MIMO多路流2》);
BER_Multipath.jpg
相比误码率曲线的输出通道,输出多径信道的误码率曲线下降慢得多,由于多径传播引起的衰落。多输入多输出信号多径情况下,与此同时,在第一子通道对应于占主导地位的传输和接收方向所以没有分集增益损失,是指斜坡上的增益变化。虽然第二个流不能提供一个获得高达第一个流,因为它使用一个主要的子通道少,整体信息可以提高吞吐量从现在可以同时传输多个数据流。

总结

这个演示解释了阵列处理能够提高MIMO无线通信系统的性能。根据信道的性质不同,数组通过数组可以被用来改善信噪比增益和分集增益;通过空间复用或改善的能力。
现在你理解一些基本的MIMO无线通信如波束形成,预编码,分集增益和空间复用。这个演示中使用的辅助函数结束时,这个脚本相连。请运行代码,向我们伸出援手studentcompetitions@mathworks.com如果你有任何进一步的问题。

进一步的探索

除了直观的统一传输元素之间的分裂能力,信道的容量可以进一步提高了冲水的算法。详情请参阅演示”提高无线通信系统的信噪比和能力利用天线阵列”。
学习如何使波束形成真正的在5克,请观看视频教程”波束形成的MU-MIMO 5 g的新收音机”。此外,大量的例子和引用应用程序中可用在无线通信的文档,这可以帮助你更容易地理解相关的概念和理论,清楚。各种各样的例子人工智能的无线也可以为你提供更多参考应用程序如何应用人工智能技术在无线通信。玩得开心!

辅助函数

第一个helper函数是对多输入多输出信号在一个2 d绘图区域。
函数helperPlotSpatialMIMOScene (txarraypos、rxarraypos txcenter、rxcenter scatpos, wt, wr)
narginchk (5、7);
征求=规范(txcenter-rxcenter);
如果大小(txarraypos 2) = = 1 & &大小(rxarraypos 2) = = 1
spacing_scale = 0;
elseif大小(txarraypos 2) = = 1
spacing_scale =征求/ 20 /意味着(diff (rxarraypos (2:)));
其他的
spacing_scale =征求/ 20 /意味着(diff (txarraypos (2:)));
结束
txarraypos_plot = txarraypos * spacing_scale + txcenter;
rxarraypos_plot = rxarraypos * spacing_scale + rxcenter;
持有;
情节(txarraypos_plot (1:), txarraypos_plot (2:)“伏特”,“MarkerSize”10
“MarkerFaceColor”,“k”);
文本(txcenter(1) -85年,txcenter(2) -15年,“TX”);
情节(rxarraypos_plot (1:), rxarraypos_plot (2:)“伏特”,“MarkerSize”10
“MarkerFaceColor”,“k”);
文本(rxcenter (1) + 35, rxcenter(2) -15年,“处方”);
如果isnan (scatpos)
集(gca),“DataAspectRatio”,1,1,1);
线([txcenter (1) rxcenter (1)]、[txcenter (2) rxcenter (2)));
其他的
hscat =情节(scatpos (1:), scatpos (2:)“罗”);
m = 1:尺寸(scatpos, 2)
情节([txcenter (1) scatpos(1米)],[txcenter (2) scatpos(2米),“b”);
情节([rxcenter (1) scatpos(1米)],[rxcenter (2) scatpos(2米),“b”);
结束
传奇(hscat, {“散射”},“位置”,“东南”);
结束
如果输入参数个数> 5
nbeam =征求/ 5;
如果~ isnan (wt)
txbeam_ang = 90:90;
txbeam = abs (wt * steervec (txarraypos txbeam_ang));% wt行
txbeam = txbeam / max (txbeam) * nbeam;
[txbeampos_x, txbeampos_y] = pol2cart(函数(txbeam_ang) txbeam);
情节(txbeampos_x + txcenter (1) txbeampos_y + txcenter (2),“k”);
结束
如果~ isnan (wr)
rxbeam_ang = (90:180 -179: -90);
rxbeam = abs (wr。* steervec (rxarraypos rxbeam_ang));% wr列
rxbeam = rxbeam / max (rxbeam) * nbeam;
[rxbeampos_x, rxbeampos_y] = pol2cart(函数(rxbeam_ang) rxbeam);
情节(rxbeampos_x + rxcenter (1) rxbeampos_y + rxcenter (2),“k”);
结束
结束
;
持有;
结束
第二个helper函数是计算误码率值的一种联系。
函数nber = helperMIMOBER (chan x, snr_param wt, wr)
Nsamp =大小(x, 1);
Nrx =大小(chan) 2);
Ntx =大小(chan) 1);
如果输入参数个数< 4
wt = 1 (1、Ntx);
结束
如果输入参数个数< 5
或者说是= 1 (Nrx, 1);
结束
xt = 1 /√(Ntx) * (2 * x - 1) * wt;%映射到bpsk
nber = 0 (Nrx元素个数(snr_param),“喜欢”1);%真实
m = 1:元素个数(snr_param)
n =√db2pow -snr_param (m)) / 2) * (randn (Nsamp Nrx) + 1我* randn (Nsamp Nrx));
y = xt陈* * wr + n *福;
xe =实际(y) > 0;
nber(:,米)= (x ~ = xe)之和;
结束
结束
前两个函数,一个输出场景/链接可以被认为是一个特例的MIMO场景/链接。
第三个功能是计算散射的位置。
函数[txang, rxang, g, scatpos] =
helperComputeRandomScatterer (txcenter rxcenter Nscat)
和兰德(1,Nscat) + = 90 * 45;
ang =(2 *(兰德(1,元素个数(ang)) > 0.5) 1)。* ang;
r = 1.5 *规范(txcenter-rxcenter);
scatpos = phased.internal.ellipsepts (txcenter (1:2), rxcenter (1:2), r, ang);
scatpos = [scatpos; 0 (Nscat)];
g = 1 (1、Nscat);
[~,txang] = rangeangle (scatpos txcenter);
[~,rxang] = rangeangle (scatpos rxcenter);
结束
第四个函数来绘制误码率曲线。
函数helperBERPlot (ebn0 ber)
h = semilogy (ebn0 ber);
集(gca),“YMinorGrid”,“上”,“XMinorGrid”,“上”);
markerparam = {“x”,“+”,“^”,“v”,“。”};
m = 1:元素个数(h)
h (m)。标志= markerparam {m};
结束
包含(“E_b / N_0 (dB)”);
ylabel (“方方面面”);
结束

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。