3×2 MIMO系统和2×2 MIMO系统对比
从 SVD(奇异值分解)预编码 的角度分析,3×2 MIMO 系统相比 2×2 MIMO 系统在容量、功率分配灵活性和抗干扰能力方面具有潜在优势。以下是具体分析:
1. SVD预编码的基本原理
SVD 预编码是一种基于信道状态信息(CSI)的 MIMO 技术,通过对信道矩阵进行奇异值分解,将 MIMO 信道分解为多个并行的独立子信道(称为奇异值通道)。具体步骤为:
-
信道矩阵分解:
假设信道矩阵为 H \mathbf{H} H,其 SVD 分解为:
H = U Σ V H \mathbf{H} = \mathbf{U} \mathbf{\Sigma} \mathbf{V}^H H=UΣVH
其中:
- U \mathbf{U} U和 V \mathbf{V} V是酉矩阵(正交矩阵)。
- Σ \mathbf{\Sigma} Σ是对角矩阵,对角线元素为奇异值 σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r σ1≥σ2≥⋯≥σr,其中 r = rank ( H ) r = \text{rank}(\mathbf{H}) r=rank(H)。 -
预编码与后编码:
- 发射端:使用 V \mathbf{V} V作为预编码矩阵,将信号投影到信道的最优方向。
- 接收端:使用 U H \mathbf{U}^H UH作为后编码矩阵,恢复原始信号。
-
等效信道模型:
经过预编码和后编码后,等效信道变为 Σ \mathbf{\Sigma} Σ,即:
y = Σ x + n \mathbf{y} = \mathbf{\Sigma} \mathbf{x} + \mathbf{n} y=Σx+n
其中每个子信道的增益为奇异值 σ i \sigma_i σi,且相互独立。
2. 3×2 MIMO 与 2×2 MIMO 的关键差异
(1) 信道矩阵的秩(Rank)
-
2×2 MIMO:信道矩阵的最大秩为 r = min ( 2 , 2 ) = 2 r = \min(2,2) = 2 r=min(2,2)=2,即最多支持 2 个独立子信道。
-
3×2 MIMO:信道矩阵的最大秩为 r = min ( 3 , 2 ) = 2 r = \min(3,2) = 2 r=min(3,2)=2,同样支持 2 个独立子信道。
结论:两者的最大子信道数相同,但 3×2 MIMO 的发射天线更多,为优化功率分配提供了更高的自由度。
(2) 奇异值分布
- 2×2 MIMO:两个奇异值 σ 1 , σ 2 \sigma_1, \sigma_2 σ1,σ2。
- 3×2 MIMO:两个奇异值 σ 1 , σ 2 \sigma_1, \sigma_2 σ1,σ2,但由于发射天线更多,奇异值的分布可能更优:
- 发射天线增加会提升信道矩阵的条件数(即 σ 1 / σ 2 \sigma_1 / \sigma_2 σ1/σ2可能更小),减少子信道之间的增益差异。
- 更多的发射天线可以通过预编码矩阵 V \mathbf{V} V更好地“对齐”信道方向,提升有效增益。
(3) 功率分配的灵活性
在 SVD 预编码中,发射功率可以通过 注水算法(Water-filling) 分配到各个子信道。对于 3×2 MIMO:
- 发射天线更多,预编码矩阵 V ∈ C 3 × 3 \mathbf{V} \in \mathbb{C}^{3 \times 3} V∈C3×3的维度更高,可以在 三维空间 中优化信号方向。
- 即使仅使用 2 个子信道,额外的自由度可以更灵活地抑制干扰或增强主信道的增益。
3. 3×2 MIMO 的优势
(1) 更高的容量潜力
MIMO 系统的容量由下式决定:
C = ∑ i = 1 r log 2 ( 1 + P i σ i 2 N 0 ) C = \sum_{i=1}^r \log_2 \left( 1 + \frac{P_i \sigma_i^2}{N_0} \right) C=i=1∑rlog2(1+N0Piσi2)
其中 P i P_i Pi是分配到第 i i i个子信道的功率。
- 3×2 MIMO 的发射天线更多,可能通过优化功率分配(注水算法)在相同总功率下获得更高的容量。
- 例如,在信道条件较好时,可以将更多功率分配到主信道(对应 σ 1 \sigma_1 σ1),提升整体容量。
(2) 波束成形增益
额外的发射天线(3Tx vs 2Tx)允许更精确的波束成形:
- 预编码矩阵 V \mathbf{V} V的维度更高(3×3 vs 2×2),可以更精确地匹配信道的主方向。
- 在低信噪比(SNR)场景下,波束成形增益对性能提升更显著。
(3) 抗干扰能力
- 3×2 MIMO 的预编码矩阵有更多自由度来抑制干扰(例如,通过零陷技术)。
- 在存在多用户干扰或噪声时,3×2 系统可能表现出更好的鲁棒性。
4. 仿真对比示例
假设两种系统在瑞利衰落信道下使用 SVD 预编码和注水算法:
-
3×2 MIMO:
- 信道矩阵 H ∈ C 2 × 3 \mathbf{H} \in \mathbb{C}^{2 \times 3} H∈C2×3,秩为 2。
- 预编码矩阵 V ∈ C 3 × 3 \mathbf{V} \in \mathbb{C}^{3 \times 3} V∈C3×3,可优化三维空间中的信号方向。
-
2×2 MIMO:
- 信道矩阵 H ∈ C 2 × 2 \mathbf{H} \in \mathbb{C}^{2 \times 2} H∈C2×2,秩为 2。
- 预编码矩阵 V ∈ C 2 × 2 \mathbf{V} \in \mathbb{C}^{2 \times 2} V∈C2×2。
结果:
- 容量:3×2 MIMO 的容量可能更高(尤其在低信噪比时)。
- 误码率:3×2 MIMO 的误码率更低(因波束成形增益和更优的功率分配)。
5. 总结
从 SVD 预编码的角度看,3×2 MIMO 相比 2×2 MIMO 的优势主要体现在:
- 更高的自由度:通过更多发射天线优化信号方向和功率分配。
- 更强的波束成形能力:提升主信道的有效增益。
- 更优的抗干扰性能:利用额外自由度抑制干扰。
尽管两者的最大子信道数相同(均为 2),但 3×2 MIMO 在灵活性和性能潜力上更优,尤其是在信道条件复杂或需要高可靠性的场景中。
值得注意的是,在3×2 MIMO系统中,仅选择V的前两列作为预编码矩阵
,第三根天线是否被浪费需结合具体场景分析:
-
物理层面的"浪费"
- 信道矩阵H的秩为2,SVD分解后仅前两列V对应有效信道空间,第三列属于零空间(无法传输能量)。
- 此时第三根天线未参与有效信号传输,物理上确实存在未被利用的情况。
-
实际优化手段
- 动态天线选择(参考第二篇论文):系统可通过算法周期性地选择最优的两根发射天线,关闭第三根以降低干扰和功耗。
- 功率重分配:零空间对应的天线可通过功率控制关闭(如注水算法中分配功率为0),避免能量浪费。
- 多用户复用:在多用户场景下,第三根天线可服务其他用户(如MU-MIMO),实现空间资源复用。
-
性能权衡
- 若强制使用第三根天线,需扩展为3×3系统(需增加接收天线),否则会导致信道间干扰。
- 在有限反馈系统中(参考第一篇论文),保留第三根天线可作为冗余,提高信道估计鲁棒性。
场景 | 第三天线状态 | 资源利用率 |
---|---|---|
单用户传输 | 关闭或零功率 | 物理层部分闲置,但避免干扰 |
多用户协作(CoMP) | 服务其他用户 | 空间复用提升系统容量 |
信道时变环境 | 作为备用天线 | 通过天线选择实现分集增益 |
结论:在单用户3×2场景下,第三根天线确实无法用于当前数据流传输,但通过天线选择、功率控制或多用户调度,可转化为系统级资源优化,而非绝对意义上的浪费。实际系统中常会保留冗余天线以应对信道变化和实现分集增益。
3*2MIMO系统SVD预编码(MMSE检测)
import numpy as np
import matplotlib.pyplot as plt# ================== 系统参数配置 ==================
Nt = 3 # 发射天线数
Nr = 2 # 接收天线数
Ns = 2 # 数据流数
num_symbols = 1000 # 总符号数
SNR_dB = 10 # 信噪比(dB)
np.random.seed(0)# ================== QPSK调制模块 ==================
def qpsk_mod(bits):bit_pairs = bits.reshape(-1, 2)symbols = 1 / np.sqrt(2) * (2 * bit_pairs[:, 0] - 1 + 1j * (2 * bit_pairs[:, 1] - 1))return symbols# ================== 信道生成模块 ==================
def generate_correlated_channel():# 天线相关矩阵corr_tx = np.array([[1, 0.3, 0.1],[0.3, 1, 0.2],[0.1, 0.2, 1]])corr_rx = np.array([[1, 0.5],[0.5, 1]])# 生成独立信道矩阵H_temp = np.random.randn(Nr, Nt) + 1j * np.random.randn(Nr, Nt)# Kronecker信道建模R = np.kron(corr_rx, corr_tx)H_vec = R @ H_temp.reshape(-1, 1)return np.sqrt(0.5) * H_vec.reshape(Nr, Nt)# ================== 预编码模块 ==================
def svd_precoding(H):U, S, Vh = np.linalg.svd(H)return Vh.conj().T[:, :Ns]# ================== 接收端检测模块 ==================
def mmse_detection(y, H, V, noise_var):H_eff = H @ VW = np.linalg.inv(H_eff.T.conj() @ H_eff + noise_var * np.eye(Ns)) @ H_eff.T.conj()return W @ y# ================== 主仿真流程 ==================
if __name__ == "__main__":# 生成随机比特流bits = np.random.randint(0, 2, 2 * num_symbols)# QPSK调制(维度调整为Ns x (num_symbols/2))s = qpsk_mod(bits).reshape(Ns, -1)# 信道生成与预编码H = generate_correlated_channel()U, S, Vh = np.linalg.svd(H)V= Vh.conj().T[:, :Ns]# 预编码处理s_precoded = V @ s# 信道传输(添加噪声)noise_power = 10 ** (-SNR_dB / 10)noise = np.sqrt(noise_power / 2) * (np.random.randn(Nr, s.shape[1]) + 1j * np.random.randn(Nr, s.shape[1]))y = H @ s_precoded + noise# MMSE检测s_hat = mmse_detection(y, H, V, noise_power)# SVD解码# s_hat = np.dot(U.conj().T, y) # 恢复符号# 信号解调s_hat = s_hat.reshape(-1)bits_hat = np.zeros_like(bits)bits_hat[::2] = (np.real(s_hat) > 0).astype(int)bits_hat[1::2] = (np.imag(s_hat) > 0).astype(int)# 性能评估ber = np.mean(bits != bits_hat)mse = np.mean(np.abs(s.reshape(-1) - s_hat) ** 2)print(f"BER: {ber}")print(f"MSE: {mse}")# ================== 可视化模块 ==================
plt.figure(figsize=(10, 4))
plt.subplot(121)
plt.scatter(np.real(s_hat), np.imag(s_hat), alpha=0.6)
plt.title('Receiving constellation chart')
plt.subplot(122)
plt.plot(np.abs(H.reshape(-1)), 'o-')
plt.title('Amplitude of the channel coefficient')
plt.tight_layout()
plt.show()
相关文章:
3×2 MIMO系统和2×2 MIMO系统对比
从 SVD(奇异值分解)预编码 的角度分析,32 MIMO 系统相比 22 MIMO 系统在容量、功率分配灵活性和抗干扰能力方面具有潜在优势。以下是具体分析: 1. SVD预编码的基本原理 SVD 预编码是一种基于信道状态信息(CSI…...

【MySQL — 数据库基础】深入解析 MySQL 的联合查询
1. 插入查询结果 语法 insert into table_name1 select* from table_name2 where restrictions ;注意:查询的结果集合,列数 / 类型 / 顺序 要和 insert into 后面的表相匹配;列的名字不要求相同; create table student1(id int , …...

【医院运营统计专题】3.解码医院运营统计:目标、原则与未来蓝图
医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、医院运营统计的关键意义 在医疗行业持续发展与变革的大背景下,医院运营统计作为医院管理的关键组成部分,其重要性愈发凸显。从国内医院的普遍现状来看,运营统计已深度融入日常管理,为医院的有序运转提…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_atomic_cmp_set 函数
目录 修正 执行 ./configure 命令时,输出: checking for OS Linux 6.8.0-52-generic x86_64 checking for C compiler ... found using GNU C compiler gcc version: 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) 所以当前环境是 x86_64 于是在 src…...

CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测
代码地址:CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测 CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测 一、引言 1.1、研究背景和意义 光伏功率预测在现代电力系统中占有至关重要的地位。随着可再生能源…...

【YOLO系列】YOLOv5 NMS源码理解、更换为DIoU-NMS
代码来源:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite 使用的代码是YOLOv5 6.1版本 参考笔记:YOLOv5改进系列(八) 更换NMS非极大抑制DIoU-NMS、CIoU-NMS、EIoU-NMS、GIoU-NMS 、SIoU-NMS、Soft-…...
Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1)
Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1) import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.HardwareRenderer import android.graphics.PixelFormat import android.graphic…...

【linux学习指南】线程同步与互斥
文章目录 📝线程互斥🌠 库函数strncpy🌉进程线程间的互斥相关背景概念🌉互斥量mutex 🌠线程同步🌉条件变量🌉同步概念与竞态条件🌉 条件变量函数 🚩总结 📝线…...
JavaScript函数与方法详解
目录 一、函数的定义 1. 函数声明 2. 函数表达式 3. 箭头函数 二、函数的调用 1. 调用方式 2. 参数数量的灵活性 三、arguments 对象 1. 基本概念 2. 属性 3. 应用场景 4. 转换为真数组 5. 总结 四、Rest参数 1. 基本概念 2. 特点 3. 应用场景 4. 总结 五、变…...

【论文笔记】ZeroGS:扩展Spann3R+GS+pose估计
spann3r是利用dust3r做了增量式的点云重建,这里zeroGS在前者的基础上,进行了增量式的GS重建以及进行了pose的联合优化,这是一篇dust3r与GS结合的具有启发意义的工作。 abstract NeRF和3DGS是重建和渲染逼真图像的流行技术。然而,…...
AtCoder - arc058_d Iroha Loves Strings解答与注意事项
链接:Iroha Loves Strings - AtCoder arc058_d - Virtual Judge 利用bitset这一数据结构,定义bitset类型的变量dp[i]表示第i到n个字符串能拼成的字符串长度都有哪些,比如00100101,表示能拼成的长度有0,2,5,࿰…...

企业使用统一终端管理(UEM)工具提高端点安全性
什么是统一终端管理(UEM) 统一终端管理(UEM)是一种从单个控制台管理和保护企业中所有端点的方法,包括智能手机、平板电脑、笔记本电脑、台式机和 IoT设备。UEM 解决方案为 IT 管理员提供了一个集中式平台,用于跨所有作系统和设备类型部署、配置、管理和…...

Leetcode 算法题 9 回文数
起因, 目的: 数学法。 % 求余数, 拆开组合,组合拆开。 这个题,翻来覆去,拆开组合, 组合拆开。构建的过程。 题目来源,9 回文数: https://leetcode.cn/problems/palindrome-number…...

设计模式Python版 命令模式(上)
文章目录 前言一、命令模式二、命令模式示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对象之间的组合&…...

C语言之循环结构:直到型循环
C语言 循环结构 直到型循环的实现 特点:先执行,后判断,不管条件是否满足,至少执行一次。典型代表:do…while,goto(已淘汰,不推荐使用) do…while 语法: d…...

细说STM32F407单片机RTC的备份寄存器原理及使用方法
目录 一、备份寄存器的功能 二、示例功能 三、项目设置 1、晶振、DEBUG、CodeGenerator、USART6 2、RTC 3、NVIC 4、GPIO 及KEYLED 四、软件设计 1、main.h 2、main.c 3、rtc.c 4、keyled.c、keyled.h 五、运行调试 本实例旨在介绍备份寄存器的作用。本实例继续使…...

MATLAB计算反映热需求和能源消耗的度数日指标(HDD+CDD)(全代码)
目录 度数日(Degree Days, DD)概述计算公式MATLAB计算代码调用函数1:计算单站点的 CDD参考度数日(Degree Days, DD)概述 度数日(Degree Days, DD)是用于衡量建筑、城市和地区的热需求和能源消耗模式的指标。它分为两部分: 加热度日(Heating Degree Days, HDD):当室…...

J6 X8B/X3C切换HDR各帧图像
1、OV手册上的切换命令 寄存器为Ox5074 各帧切换: 2、地平线control tool实现切换命令 默认HDR模式出图: HCG出图: LCG出图 SPD出图 VS出图...
09-轮转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 方法一:使用额外数组 function rotate(nums: number[], k: number): void {const n nums.length;k k % n; // 处理 k 大于数组长度的情况const newNums new A…...
用vue3写一个好看的wiki前端页面
以下是一个使用 Vue 3 Element Plus 实现的 Wiki 风格前端页面示例,包含现代设计、响应式布局和常用功能: <template><div class"wiki-container"><!-- 头部导航 --><el-header class"wiki-header"><d…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...