具有 1 个射频链的 OFDM-MIMO 系统的波束训练(Matlab代码实现)
创始人
2024-03-16 11:44:21
0

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果 

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

本文包括波束训练、MIMO 信道生成、DFT 码本构建。DFT码本是为平面天线阵列构建的。

📚2 运行结果 

🌈3 Matlab代码实现

部分代码:

%% Clear workspace

clear;
close all;

rng(0);

%% System parameters

fc = 30e9; % carrier frequency
N = 64; % number of subcarriers
L = 20; % number of clusters
M = 20; % number of non-resolvable paths per cluster
numRF = 1; % 1 data stream

% Antenna arrays - use isotropic antenna elements
% Transmitter
Ntv = 8;
Nth = 8;
Nt = Ntv*Nth;
% Define tapers to reduce sidelobes
dBdown = 30; % dB
taperz = chebwin(Ntv,dBdown);
tapery = chebwin(Nth,dBdown);
tap = taperz*tapery.'; % Multiply vector tapers to get 8-by-8 taper values
arrayTx = phased.URA('Size',[Ntv Nth],'ElementSpacing',[0.5*physconst('LightSpeed')/fc 0.5*physconst('LightSpeed')/fc],'Taper',tap);
posTx = getElementPosition(arrayTx);

% Receiver
Nrv = 4;
Nrh = 4;
Nr = Nrv*Nrh;
% Define tapers to reduce sidelobes
dBdown = 30; % dB
taperz = chebwin(Nrv,dBdown);
tapery = chebwin(Nrh,dBdown);
tap = taperz*tapery.'; % Multiply vector tapers to get 8-by-8 taper values
arrayRx = phased.URA('Size',[Nrv Nrh],'ElementSpacing',[0.5*physconst('LightSpeed')/fc 0.5*physconst('LightSpeed')/fc],'Taper',tap);
posRx = getElementPosition(arrayRx);

%% DFT codebook

eleSpacing = 0.5; % element spacing, normalized by wavelength
[beamTx,beamAngleTx,beamAngleElTx,beamAngleAzTx,beamElTx,beamAzTx] = getDFTCodebook(Ntv,Nth,eleSpacing,eleSpacing);
[beamRx,beamAngleRx,beamAngleElRx,beamAngleAzRx,beamElRx,beamAzRx] = getDFTCodebook(Nrv,Nrh,eleSpacing,eleSpacing);

% % Check a certain beam (index:18) at transmitter
% figure();pattern(arrayTx,fc,[-180:180],[-89:90],'PropagationSpeed',physconst('LightSpeed'),'CoordinateSystem','polar','Type','powerdb','Weights',beamTx(:,18));

% % Check beam patterns in azimuth using linear array (transmitter)
% array = phased.ULA('NumElements',Nth,'ElementSpacing',0.5*physconst('LightSpeed')/fc);
% figure();
% for n = 1:Nth
%     pattern(array,fc,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),'CoordinateSystem','polar','Type','powerdb','Weights',beamAzTx(:,n));hold on;
% end

%% Perform beam training

% Generate MIMO channels
[h,arrayResponseTx,arrayResponseRx,pathGain] = MIMOChan(Nt,Nr,L,M,posTx,posRx);
H = 1/sqrt(N)*fft(h,N,3); % frequency-domain channel

% Beam sweeping
rPower = zeros(Nt,Nr,N);

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Narengerile (2022). Beam training for OFDM-MIMO system with 1 RF chain 

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...