Matlab中产生高斯白噪声信号的方法和其功率计算

Matlab中产生高斯白噪声信号的方法和其功率计算

  • matlab中计算信号能量:

p o w e r = ∑ n = 1 N x 2 ( n ) power= \sum_{n=1}^Nx^2(n) power=n=1Nx2(n)

​ 功率为
P = 1 N ∑ n = 1 N x 2 ( n ) P= \frac{1}{N}\sqrt{\sum_{n=1}^Nx^2(n)} P=N1n=1Nx2(n)
对应matlab代码 P=X'*X/N,或P=sum(abs(x).^2)/length(x)

  • 在matlab中可以用randn、wgn、awgn产生功率为 $ P$ 瓦高斯白噪声信号
  1. randn函数

    randn生成信号均值为0,方差(也就是噪声概率)为1W的高斯白噪声1,randn(M,N)生成MXN个

    • 若生成的为实信号,则幅度为 P \sqrt{P} P
    • 生产复信号,则幅度为 P / 2 \sqrt{P/2} P/2
    • 若按照信噪比生成指定信号,假设噪声信号 P n = 1 Pn=1 Pn=1, s n r = 10 l o g 1 0 P s P n snr=10log10^{\frac{Ps}{Pn}} snr=10log10PnPs,则信号功率 P s = 1 0 s n r 10 Ps=10^{\frac{snr}{10}} Ps=1010snr,则信号幅度为 U s = P s Us=\sqrt{Ps} Us=Ps

    randn产生白噪声信号的matlab代码

     N=1000;M=10000;
    % 仿真M次,取其平均for  i =1:M     x=randn(N,1);%信号幅度为1 ,均值为0y=wgn(N,1,10*log10(1));%产生噪声功率为1W的高斯白噪声Px_randn0(i)=(x'*x)/N ;  % randn产生幅度为1的信号功率计算,第一种方式Px_randn1(i)=sum(abs(x).^2/N);%randn产生幅度为1的信号功率计算,第二种方式Py_wgn(i)=(y.'*y)/N; %计算wgn产生的1W的信号的功率,应该等于1 end Px=mean(Px_randn0)%计算randn产生信号的功率,M次取平均Px_2=mean(Px_randn1)%计算randn产生信号的功率第二种方法,M次取平均Py=mean(Py_wgn) %计算wgn产生信号的功率第二种方法,M次取平均
    %% 验证,若x=randn(N,1)+1i*randn(N,1);则Px=2Py功率为2 
    
  2. wgn2

    y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。

    对于高斯白噪声,其功率(单位W)和方差相等。

    若要产生一个均值0,方差为0.0965的高斯白噪声,不可直接用WGN(N,1,0.0965)产生可以采用

    • x=sqrt(0.0965)*randn(N,1)
    • y=wgn(N,1,10*log10(0.0965)) %此处要将方差对应功率,单位W,换算成dBW,即10*log10(0.0965)
  3. awgn

    y = awgn(x,snr) 给信号x 加入指定的 SNR 的高斯白噪声,其中默认原信号x 的功率为 0 dBw, 即 1w;

    y = awgn(x,snr,sigpower) 给信号x 加入指定的 SNR 的高斯白噪声,sigpower用于指定原信号x的功率,单位为dBw;
    y = awgn(x,snr,‘measured’) 给信号x 加入指定的 SNR 的高斯白噪声,它会先测量一个原信号x 的功率

    %%测试验证代码1
    signal_frequency=1.2e9;
    fs=8e9; 
    Pn = 1;
    N=1000;
    M=10000;
    SNR=10;
    X= sqrt(10^(SNR/10))*exp(1i*2*pi*(signal_frequency/fs)*[1:N]');
    for i =1:Mnoise = sqrt(Pn/2)*(randn(1,N)+1i*randn(1,N));noise_power(i)=sum(abs(noise.^2))/N;noise_power_2(i)=(noise*noise')/N ;%噪声功率的第二种求法
    end
    sigpower=sum(abs(X.^2))/Nnoise_mean=mean(noise_power)
    noise_mean_2=mean(noise_power_2)
    s_n=10*log10(sigpower/noise_mean)%%测试验证代码2
    signal_frequency=1.2e9;
    fs=8e9; 
    N=200;
    %  X = randn(N,1)+1i*randn(N,1);      %产生正弦信号
    X= exp(1i*2*pi*(signal_frequency/fs)*[1:N]');
    % Y = awgn(X,10,'measured');                          %加入信噪比为10db的噪声,加入前预估信号的功率(强度)
    Y = awgn(X,10);
    Z=Y-X;%噪声信号,要求其方差
    sigPower_X = sum(abs(X).^2)/length(X)            %求出信号功率
    sigPower_X_2=abs((X'*X)/N )noisePower=sum(abs(Y-X).^2)/length(Y-X)   %求出噪声功率
    Px=(Z'*Z)/N %求出噪声功率,第二种求法
    %  Px=mean(abs(Z))
    SNR=10*log10(sigPower_X/noisePower)          %由信噪比定义求出信噪比,单位为db
    

  1. matlab产生指定功率的噪声信号、固定SNR的信号 ↩︎

  2. matlab中噪声功率、噪声方差关系 ↩︎

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

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

相关文章

C1W1.Assignment: Logistic Regression

理论课:C1W1.Sentiment Analysis with Logistic Regression 文章目录 前期准备导入包导入数据处理推文文本 Part 1: Logistic regressionPart 1.1: Sigmoid实现 sigmoid 函数Logistic regression: regression and a sigmoid Part 1.2 Cost function and GradientUp…

Python 使用proto 发送socket数据

import socket import binascii import struct from SensingMonitoring_pb2 import Command, CommandNamesif __name__ "__main__":client socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(("192.168.1.100", 22295))# 发送数据comman…

软件模块的初始化

什么是初始化? 软件的初始化(Initialization)是指软件启动或重新配置时执行的一系列步骤和过程,旨在准备软件运行环境、加载必要的配置信息、检查系统依赖项、分配资源(如内存、文件句柄等),以及…

Microsoft Build 2024 推出 .NET 9:Tensor<T>、 OpenAI Collaboration和.NET Aspire

在 Microsoft Build 2024 上,.NET 9 4 发布,引入了用于深度学习的 Tensor 类型以及与 OpenAI Collaboration实现GPT4o和Assistants v2等功能。这些最新改进还带来了 .NET Aspire,简化了云原生应用开发。更新涵盖 ASP.NET Core、Blazor 和 .NE…

5、Hacker_Kid-v1.0.1

中等难度 目标root权限 先进行一波IP地址发现 netdiscover -i eth0 -r 192.168.1.1/24 发现存在的靶机ip 进行一波端口的探测 发现是一个apache的服务和一个tornado的网站 这里有个细节部分,53端口常见的情况都是走的udp协议做的域名解析,这里查询出来…

【ARM】CCI缓存一致性整理

目录 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置​编辑 3.CCI500内部结构​编辑 4.功能描述 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置 3.CCI500内部结构 Transaction Tracker(TT)是用来解决一致性和ordering问题的,它…

完成SSH连接与端口映射并运行hello_world.py以及创建conda环境

完成SSH连接与端口映射并运行hello_world.py 第一步: 使用vscode打开连接开发机如图 第二步: 端口映射 ssh -p 37367 rootssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyCheckingno 如: ssh -…

牛客周赛51 F(静态区间最大连续子段和)

题面 题目地址 原题是SPOJ 1043。本文中我介绍的是维护前缀和的写法&#xff0c;如果你想要了解其他写法&#xff0c;可以搜索原题题解。 题目大意&#xff1a; 给定长度为n的数组a&#xff0c;q次查询&#xff0c;每次询问[l,r]中连续子段和的绝对值最大是多少 1 < n, q&l…

SpringBoot整合 Kaptcha 验证码

文章目录 1 Kaptcha 验证码1.1 引言1.2 Kaptcha1.2.1 pom.xml1.2.2 配置类1.2.2.1 Redis配置类RedisConfig1.2.2.2 验证码配置类KaptchaConfig 1.2.3 验证码控制层1.2.4 登录控制层 1 Kaptcha 验证码 1.1 引言 为防止验证系统被暴力破解&#xff0c;很多系统都增加了验证码效…

优化静止不动的GPS点(JS版)

1.理论依据: 连续的GPS点中&#xff0c;静止不动的一段或者多段这样的点序列。把这些点序列处理成一个点&#xff0c;也就是拿这些序列的第一个点即可。理论依据如下&#xff1a;从第二个点开始&#xff0c;每个点都和第一个点进行距离计算和比较。至少比较N个点。当百分之M的…

maven多模块项目打包构建的配置

使用背景&#xff1a; springbootmaven构建的多模块项目&#xff0c;没有使用springcloud&#xff0c;根项目下有多个module&#xff0c;一个module有springboot启动类&#xff0c;其他module没有启动类&#xff0c;作为module被有springboot启动类的module所引用。 1.根目录…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候&#xff0c;Win11 自动将其进行了堆叠&#xff0c;这时候就无法进行预览与打开。 问题分析&#xff1a;大部分ST的工具都是基于 JDK 来进行开发的&#xff0c;Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个&#xff0c;通过配置…

redis源码分析之底层数据结构(一)-动态字符串sds

1.绪论 我们知道redis是由c语言实现的&#xff0c;c语言中是自带字符串的&#xff0c;但是为什么redis还要再实现自己的动态字符串呢&#xff0c;这种动态字符串的底层数据结构是怎样的呢?接下来我们带着这些问题来看一看redis中的动态字符串sds。 2.sds的组成 struct __at…

pico+unity3d项目配置

重点&#xff1a;unity编辑器版本要和pico的sdk要求一致、比如&#xff1a; 对于 Unity 2022.1.14 及以上版本&#xff0c;若同时在项目中使用 URP、Linear 色彩空间、四倍抗锯齿和OpenGL&#xff0c;会出现崩溃。该问题待 Unity 引擎解决。对于 Unity 2022&#xff0c;若同时…

多个版本JAVA切换(学习笔记)

多个版本JAVA切换 很多时候&#xff0c;我们电脑上会安装多个版本的java版本&#xff0c;java8&#xff0c;java11&#xff0c;java17等等&#xff0c;这时候如果想要切换java的版本&#xff0c;可以按照以下方式进行 1.检查当前版本的JAVA 同时按下 win r 可以调出运行工具…

Pytorch张量

在conda的环境中安装Jupyter及其他软件包 Pytorch 建立在张量&#xff08;tensor&#xff09;之上&#xff0c;Pytorch张量是一个 n 维数组&#xff0c;类似于 NumPy 数组。专门针对GPU设计&#xff0c;可以运行在GPU上以加快计算效率。换句话说&#xff0c;Pytorch张量是可以运…

wget介绍

wget介绍 wget是一个广泛使用的命令行工具&#xff0c;主要用于从网络上自动下载文件。它支持HTTP、HTTPS和FTP等多种协议&#xff0c;具有递归下载、断点续传、限速下载等功能&#xff0c;使其成为一个强大而灵活的下载工具。以下是对wget的详细介绍和使用方法的概述&#xf…

解决QT creator中文乱码问题

1.首先设置文本编辑器为UTF-8 先在工具-选项-文本编辑器-behavior部分选择文件编码为UTF-8&#xff0c;紧接着是选择“如果编码是UTF-8则添加”&#xff0c;如下图 2.设置ext code for tools 为system 具体解决办法是 工具-选项-环境-interfaces这一栏有一个“Text code for to…

最新JJWT 0.12.6学习

本文参考的是jjwt官方github&#xff0c;链接在此&#xff0c;本文会持续跟进jjwt的最新版本 GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android 简介 JJWT&#xff08;Java JWT&#xff09;是Java平台上相当流行的用于生成Json Web Token的库&#xff0c…