方式一

分别对信号实部和虚部加噪,SNR=30,然后将实部和虚部合起来变成复信号,计算合起来之后的信号与噪声功率之比

%% 测试加噪方式
clear;close all;clc;
M=4;len=10000;
xk = randi([0,M-1],1,len);
xk = pskmod(xk,4);
SNR = 30;
xkR = real(xk); xkI=imag(xk);
%% 方式1
% ykR=awgn(xkR,SNR,'measured'); % 具体实现
sigPowerR=sum(abs(xkR(:)).^2)/numel(xkR);
reqSNR= 10^(SNR/10);
noisePowerR = sigPowerR/reqSNR;
noiseR = sqrt(noisePowerR)* randn(size(xkR));
ykR = xkR+noiseR;% ykI=awgn(xkI,SNR,'measured');
sigPowerI=sum(abs(xkI(:)).^2)/numel(xkI);
noisePowerI = sigPowerI/reqSNR;
noiseI = sqrt(noisePowerI)* randn(size(xkI));
ykI = xkI+noiseI;yk1=ykR+1j*ykI;sig1=xkR+1j*xkI; noise1 = noiseR+1j*noiseI;
sigPower1 = mean(abs(sig1).^2);
noisePower1 = mean(abs(noise1).^2);
rate1 = sigPower1/noisePower1;

方式二

直接对复信号加噪,SNR=30,计算信号与噪声功率之比

%% 方式2
% xkC=awgn(xk,SNR,'measured');
sigPower21 = sum(abs(xk(:)).^2)/numel(xk);
noisePower21 = sigPower21/reqSNR;
noise2 = sqrt(noisePower21/2)* (randn(size(xk)) + 1i*randn(size(xk)));
yk2=xk+noise2;sig2 = xk;
sigPower22 = mean(abs(sig2).^2);
noisePower22 = mean(abs(noise2).^2);
rate2 = sigPower22/noisePower22;

结论

两种方式所得的复信号信噪比相同

更多请关注

复信号两种不同加噪方式的比较相关推荐

  1. 动态网页常用的两种数据加载方式ajax和js动态请求

    欢迎关注"生信修炼手册"! 对于静态网页,我们只需要访问对应的URL就可以获得全部的数据了,动态网页则没有这么简单.比如以下网站 http://q.10jqka.com.cn/zj ...

  2. 汽车报户计算机自动选号,机动车可以网上选号了 自编选号、随机选号两种方式随你挑...

    晨刊讯 11月18日,皖北晨刊记者从市公安局交警支队车管所了解到,机动车网上选号系统已经开通,车主可以通过网上用户注册,预选机动车号牌,方便又快捷. 记者了解到,车主登录网址ah.122.gov.cn ...

  3. Unity游戏开发——新发教你做游戏(三):3种资源加载方式

    文章目录 一.前言 二.Unity的目录结构规范 1.Resources(不是很推荐把资源放这个目录) 2.RawAssets(存放生资源) 3.GameRes(存放熟资源) 4.StreamingA ...

  4. 二阶段补充:文件上传服务端处理,后端文件上传、前端两种文件上传方式

    1.文件上传 2.后端文件上传 两种方案: 兼容性较好的commons-fileupload,支持所有版本的Servlet,即所有版本的Tomcat 优点: 兼容性 缺点 需要外部jar,比较麻烦.代 ...

  5. 两种获取connectionString的方式

    两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...

  6. Hibernate中两种获取Session的方式

    转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...

  7. 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...

    第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...

  8. TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable

    TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable 目录 输出结果 代码设计 输出结果 代码设计 # tensorflow中的两种定义scope(命 ...

  9. python用outlook自动发邮件_python使用两种发邮件的方式smtp和outlook示例

    smtp是直接调用163邮箱的smtp服务器,需要在163邮箱中设置一下.outlook发送就是Python直接调用win32方式.调用程序outlook直接发送邮件. import win32com ...

最新文章

  1. linux C++打包程序总结
  2. oracle创建自增
  3. Tensorflow【实战Google深度学习框架】—TensorBoard
  4. 蓝牙nrf52832的架构
  5. 并发编程——进程——进程的同步与数据共享
  6. MySQL 5.1 安装过程中报apply security setting错误的解决办法 收藏
  7. 今天看明白了,为什么有些属性会这样写了:public string status{get;set;}
  8. vim 使用中的一些错误[omnifunc未设置错误]
  9. 理解数据库与数据模型的概念
  10. “DNAT+云链接+CDN”加速方案,助力出海企业落地生长
  11. EMQ MQTT云服务器搭建 - 阿里云轻量应用服务器
  12. LaTex使用Excel实现快速插入表格
  13. java 读取clob字段的几种方法
  14. 如何录制Gif动态图片
  15. 计算机编程背那个英语词汇,编程英语词汇
  16. Windows常见扩展名介绍
  17. 【原创】从头开始,使用安卓系统WebView做一个功能强大的Epub阅读器(一)
  18. 设置默认訪问项目的client的浏览器版本号(IE版本号)
  19. 数据中心系列:SDDC普及仍任重而道远
  20. ADIS16465基本读写程序及资料

热门文章

  1. Lambdas:来到您附近的Java 8!
  2. Hadoop如何工作? HDFS案例研究
  3. python 分布式队列_〖Python〗-- Celery分布式任务队列
  4. toarray方法_机器学习中类别变量的编码方法总结
  5. Struts2的配置文件struts.xml的模板
  6. IntelliJ IDEA for Mac的快速切换当前主题方案(Quick switch current scheme)
  7. 查询英文缩写形式(缩写词)的网站工具梳理
  8. Mybatis核心配置文件xml详解
  9. td 内单选框不可用_在TD,我和曾经的老师变成了同事,也收获了最满意的“课外活动”...
  10. java package报错_Java基础知识总结 - 超详细篇(上)