Channel-Estimation

授权协议 GPL-3.0 License
开发语言
所属分类 应用工具、 科研计算工具
软件类型 开源软件
地区 不详
投 递 者 窦英武
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Channel Estimation

This repository simulates an FBMC and OFDM transmission over a doubly-selective channel, including doubly-selective MMSE channel estimation in combination with interference cancellation.All figures from R. Nissel et al. “Doubly-Selective Channel Estimation inFBMC-OQAM and OFDM Systems”, IEEE VTC Fall, 2018, can be reproduced.

Supported Waveforms:

  • OFDM
  • FBMC, channel estimation: auxiliary symbols
  • FBMC, channel estimation: data spreading

Note that I use a matrix based system model. This makes the derivation of the correlation matrices relatively easy but also requires a large memory. If one wants to simulate over a higher bandwidth, either the system model must be split into smaller chunks, or the matrices must be explicitly expressed by summations.

Requirements

We used Windows 7 (64bit) and Matlab R2013b/2016a, but newer versions (and some older) should also work.

Basic Properties

Our doubly-selective channel estimation method performs close to perfect channel knowledge:

The first iteration step greatly improves the BER, which soon saturates:

Reproducible Figures

All figure from “Doubly-Selective Channel Estimation in FBMC-OQAM and OFDM Systems” can be reproduced. The figure numbers are the same as in the paper.

Additional Explanations for Channel Estimation in FBMC

The Matlab code SimpleVersion_DoublyFlat.m simulates an FBMC and OFDM transmission over a doubly-flat channel, including channel estimation. In particular, it illustrates the auxiliary symbol method and the data spreading approach, with much less overhead than for the doubly-selective channel estimation method. The script is based on my paper “On pilot-symbol aided channel estimation in FBMC-OQAM”.

Please Cite Our Paper

@inproceedings{Nissel2018VTC,
	author    = {R. Nissel and F. Ademaj and M. Rupp},
	booktitle = {IEEE Vehicular Technology Conference (VTC Fall)},
	title     = {Doubly-Selective Channel Estimation in {FBMC-OQAM} and {OFDM} Systems},
	year 	  = {2018},
	pages 	  = {1-5}, 
	month 	  = {Aug},
}

References

 相关资料
  • Channel 到概念上的端点的虚拟连接,用于执行RPC。 通道可以根据配置,负载等自由地实现与端点零或多个实际连接。通道也可以自由地确定要使用的实际端点,并且可以在每次 RPC 上进行更改,从而允许客户端负载平衡。应用程序通常期望使用存根(stub),而不是直接调用这个类。 应用可以通过使用 ClientInterceptor 装饰 Channel 实现来为 stub 添加常见的切面行为。预计大

  • 建议先查看概览,了解一些协程基本概念后再看此节。 通道,用于协程间通讯,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 实现原理 通道与PHP的Array类似,仅占用内存,没有其他额外的资源申请,所有操作均为内存操作,无IO消耗 底层使用PHP引用计数实现,无内存拷贝。即使是传递巨大字符串或数组也不会产生额外性能消耗 channel基于引用计数实现,是零拷贝的 使用示例 Co\r

  • channel数据结构 Go语言channel是first-class的,意味着它可以被存储到变量中,可以作为参数传递给函数,也可以作为函数的返回值返回。作为Go语言的核心特征之一,虽然channel看上去很高端,但是其实channel仅仅就是一个数据结构而已,结构体定义如下: struct Hchan { uintgo qcount; // 队列q中的总数据数量 uintgo dataq

  • 基于 Swoole 提供的 Swoole\Coroutine\Channel,直接在配置文件中设置,就可以在worker进程中使用,数据互通。 Swoole\Coroutine\Channel可以作为队列使用,支持多生产者协程和多消费者协程。底层自动实现了协程的切换和调度。 配置方式 在项目配置文件中加入以下节 'coroutineChannels' => [ // 定义名为n

  • channel演示 这是我们最终得到的接口: <?php function go(...$args) { spawn(...$args); } function chan($n = 0) { if ($n === 0) { return new Channel(); } else { return new BufferChannel($n

  • 缓存channel 接下来我们来实现带缓存的Channel: Sends to a buffered channel block only when the buffer is full. Receives block when the buffer is empty. <?php class BufferChannel { // 缓存容量 public $cap; /