【多天线传输技术】迫零检测算法、串行干扰相消算法、排序串行干扰相消算法

clc;
clear;
close all;
len_s=100000; % 信号长度
snr=0:2:20;%信噪比
len_snr=length(snr);
s2_1=zeros(1,4);
ber_zf=zeros(1,len_snr);
ber_zf_sic=zeros(1,len_snr);
ber_zf_chsic=zeros(1,len_snr);
for ii=1:len_snrerror_zf2=0;for i=1:len_ssn=randi([0,1],4,1); %产生随机信号mod_sn=pskmod(sn,2);sigma =sqrt(0.5.*10.^(-snr(ii)./10));%I,Q两路独立产生噪声Q_noise = randn(4, 1);I_noise = randn(4, 1);noise = complex(I_noise,Q_noise);noise = sigma.*noise;%高斯白噪声H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));y1=H*mod_sn+noise;G=inv(H);  %求逆  y1_1=G*y1;s=pskdemod(y1_1,2);%BPSK解调error_zf1=find(s~=sn);%错误判决error_zf2=length(error_zf1)+error_zf2;endber_zf(ii)=error_zf2./(len_s*4);
endfor ii=1:len_snrerror_zf22=0;for i=1:len_ssn2=randi([0,1],4,1); %产生随机信号mod_sn2=pskmod(sn2,2);sigma =sqrt(0.5.*10.^(-snr(ii)./10));%I,Q两路独立产生噪声Q_noise = randn(4, 1);I_noise = randn(4, 1);noise = complex(I_noise,Q_noise);noise = sigma.*noise;%高斯白噪声H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));y2_1_1=H*mod_sn2+noise;  %4*1for p=1:4G2=pinv(H); %伪逆矩阵w2_1=G2(p,:);  %1*4y2_1_2=w2_1*y2_1_1;s2_1(p)=pskdemod(y2_1_2,2);%BPSK解调s2_1_1=pskmod(s2_1(p),2);   %先检测第一个信号aH=s2_1_1.*H(:,p);y2_1_1= y2_1_1-aH;H(:,p)=zeros(4,1);enderror_zf21=find(s2_1.'~=sn2);%错误判决error_zf22=length(error_zf21)+error_zf22;endber_zf_sic(ii)=error_zf22./(len_s*4);
end
%选信号强度最大的
for ii=1:len_snrerror_zf22=0;for i=1:len_ssn2=randi([0,1],4,1); %产生随机信号mod_sn2=pskmod(sn2,2);  %bpsk调制sigma =sqrt(0.5.*10.^(-snr(ii)./10));%I,Q两路独立产生噪声Q_noise = randn(4, 1);I_noise = randn(4, 1);noise = complex(I_noise,Q_noise);noise = sigma.*noise;%高斯白噪声H=1/sqrt(2)*(randn(4,4) + 1i*randn(4,4));y2_1_1=H*mod_sn2+noise;G3_1=zeros(4,4);for p=1:4G3=pinv(H);%伪逆矩阵sum1=sum(abs(G3+G3_1).^2,2);%对矩阵行求和[x,p1]=min(sum1); %G3_1(p1,:)=[1000 1000 1000 1000];w2_1=G3(p1,:);y2_1_2=w2_1*y2_1_1;s2_1(p1)=pskdemod(y2_1_2,2);%BPSK解调s2_1_1=pskmod(s2_1(p1),2);aH=s2_1_1.*H(:,p1);y2_1_1= y2_1_1-aH;H(:,p1)=zeros(4,1);enderror_zf21=find(s2_1.'~=sn2);%错误判决error_zf22=length(error_zf21)+error_zf22;endber_zf_chsic(ii)=error_zf22./(len_s*4);
endsemilogy(snr,ber_zf,'-k*',snr,ber_zf_sic,'-ko',snr,ber_zf_chsic,'-kx')grid onlegend('迫零检测算法','串行干扰消除算法','排序串行干扰消除算法')xlabel('信噪比snr')ylabel('误比特率')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL注入之堆叠查询

文章目录 堆叠查询是什么?堆叠查询修改所有用户密码堆叠查询删除数据库恢复数据库 堆叠查询是什么? 在SQL中,分号;是用来表示一条sql语句的结束。试想一下我们在; 结束一个sql语句后继续构造下一条语句,会不会一起执行&#xff1f…

vscode里配置C#环境并运行.cs文件

vscode是一款跨平台、轻量级、开源的IDE, 支持C、C、Java、C#、R、Python、Go、Nodejs等多种语言的开发和调试。下面介绍在vscode里配置C#环境。这里以配置.Net SDK v5.0,语言版本为C#9.0,对应的开发平台为VS2019,作为案例说明。 1、下载vsc…

JavaScript下载excel文件

文章目录 通过链接下载a标签下载方法注意 获取文件流请求体配置下载文件流 总结 通过链接下载 a标签 对于已知地址的目标文件,前端可以使用 a标签 来直接下载,使用a标签下载使用到两个属性 download:下载文件名href:目标文件下…

PHP实现每日蛋白质摄入量计算器

1.laravel 路由 //每日蛋白质摄入计算器Route::get(api/protein/intake, FormulaControllerproteinIntakeCal); 2.代码 /*** 每日蛋白质摄入计算器*/public function proteinIntakeCal(){$number intval($this->request(number));$goalFactor array(0.8, 1.16, 0.8, 1.16,…

Shiro学习总结

第一章 入门概述 1.概念 shiro是一个Java安全框架,可以完成:认证、授权、加密、会话管理、与web集成、缓存… 2.优势 ● 易于使用,构建简单 ● 功能全面 ● 灵活,可以在任何应用程序环境中工作,并且不需要依赖它们…

Spring缓存深入解析:@Cacheable的使用详解

摘要:在本文中,我们将深入研究Spring框架中的Cacheable注解。我们会通过详细的Java示例,探讨如何使用这个功能强大的注解来提升应用程序性能。 一、什么是缓存? 在计算机科学中,缓存是一种存储技术,用于保…

LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)

题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2 输出:[7,4,1] 解释…

SQL注入之延时注入

文章目录 延时注入是什么?延时注入获取数据库版本号 延时注入是什么? 延时注入就是利用sleep()函数通过if语句判断所写的语句真假,如果为真返回我们想要的东西(例如:数据库的长度,数据库的名字等&#xff0…

如何拉取Gitee / GitHub上的Unity项目并成功运行

前言 由于目前大部分人使用的仓库都是Gitee或者是GitHub,包括小编的公司所使用的项目仓库也包括了Gitee;我们需要学习技术栈时都会去百度或者是去GitHub上看看别人的项目观摩学习,可能很多小白在遇到拉取代码时出现各种问题,或者…

智能安全帽_防抖视频定位智能安全帽头盔

智能安全帽具备出色的性能、超低功耗、广范围覆盖和简单的外围电路等优势,同时还拥有丰富的外部接口。它支持移动/联通/电信的4G5G网络,涵盖了LTE-TDD频段(B34/B38/B39/B40/B41)、LTE-FDD频段(B1/B3/B5/B8)、WCDMA频段(B1/B5/B8)、TD-SCDMA频段(B34/B39)…

二、11.系统交互

fork 函数原型是 pid_t fork(void),返回值是数字,该数字有可能是子进程的 pid ,有可能是 0,也有可能是-1 。 1个函数有 3 种返回值,这是为什么呢?可能的原因是 Linux 中没有获取子进程 pid 的方…

R语言机器学习方法在生态经济学领域

近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

static相关知识点详解

文章目录 一. 修饰成员变量二. 修饰成员方法三. 修饰代码块四. 修饰类 一. 修饰成员变量 static 修饰的成员变量,称为静态成员变量,该变量不属于某个具体的对象,是所有对象所共享的。 public class Student {private String name;private sta…

【了解一下常见的设计模式】

文章目录 了解一下常用的设计模式(工厂、包装、关系)导语设计模式辨析系列 工厂篇工厂什么是工厂简单工厂「模式」(Simple Factory「Pattern」)简单工厂代码示例:简单计算器优点:缺点: 静态工厂模式特点: 工…

如何在网页下载腾讯视频为本地MP4格式

1.打开腾讯视频官网地址 腾讯视频 2.搜索你想要下载的视频 3. 点击分享,选择复制通用代码 <iframe frameborder="0" src="ht

Pixar、Adobe 和苹果等成立 OpenUSD 联盟推行 3D 内容开放标准

导读Pixar、Adobe、Apple、Autodesk 与 NVIDIA 联手 Linux 基金会旗下的联合开发基金会&#xff08;JDF&#xff09;宣布建立 OpenUSD 联盟&#xff08;AOUSD&#xff09;以推行 Pixar 创建的通用场景描述技术的标准化、开发、进化和发展。 联盟寻求通过推进开放式通用场景描述…

全网最全ArrayList底层原理实现

1. ArrayList集合底层数据结构 1. ArrayList集合介绍 ArrayList是实现了List接口的动态数组&#xff0c;所谓动态数组就是他的大小是可变的。实现了所有可选列表操作&#xff0c;并允许包括Null在内的所有元素。除了实现 List 接口外&#xff0c;此类还提供一些方法来操作内部…

如何将应用程序发布到 App Store

憧憬blog主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是移动开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索iOS开发的无限可能&#xff01; &#x1f525;我们与您分享最新的技术洞察和实战经验&#xff0…

伦敦金短线好还是长线好

在伦敦金投之中&#xff0c;长期有一个争论很久的问题&#xff0c;那就是伦敦金投资究竟是长线好还是短线好&#xff1f;不同的投资者对这个问题有不同的看法&#xff0c;一般认为&#xff0c;伦敦金投资比较适合短线交易。笔者也将讨论这个问题&#xff0c;看看伦敦金投资是不…

MinIO线上扩容实战

硬件投入肯定是随着业务的增长而增长&#xff0c;这就要求中间件平台必须提供水平伸缩机制&#xff0c;MinIO对象存储服务也不例外&#xff0c;本文就详细介绍MinIO的扩容。 Minio支持通过增加新的Server Pool来扩容老的集群。每个Server Pool都是一个相对独立的故障域&#x…