一、MATLAB中自带的高斯白噪声的两个函数

MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。

1. WGN:产生高斯白噪声

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

y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位指定负载阻抗。

y = wgn(m,n,p,imp,state) 重置RANDN的状态。

在数值变量后还可附加一些标志性参数:

y = wgn(…,POWERTYPE) 指定p的单位。POWERTYPE可以是'dBW', 'dBm'或'linear'。线性强度(linear power)以瓦特(Watt)为单位。

y = wgn(…,OUTPUTTYPE) 指定输出类型。OUTPUTTYPE可以是'real'或'complex'。

2. AWGN:在某一信号中加入高斯白噪声

y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。

y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。

y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。

二、通过相关概念自编函数实现任意噪声的叠加及信噪比的计算

在信号处理中经常需要把噪声叠加到信号上去,在叠加噪声时往往需要满足一定的信噪比,这样产生二个问题,其一噪声是否按指定的信噪比叠加,其二怎么样检验带噪信号中信噪比满足指定的信噪比。在MATLAB中可以用randn产生均值为0方差为1的正态分布白噪声,但在任意长度下x=randn(1,N),x不一定是均值为0方差为1(有些小小的偏差),这样对后续的计算会产生影响。在这里提供3个函数用于按一定的信噪比把噪声叠加到信号上去,同时可检验带噪信号中信噪比。1,把白噪声叠加到信号上去:function [Y,NOISE] = noisegen(X,SNR)% noisegen add white Gaussian noise to a signal.% [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X.  The SNR is in dB.NOISE=randn(size(X));NOISE=NOISE-mean(NOISE);signal_power = 1/length(X)*sum(X.*X);noise_variance = signal_power / ( 10^(SNR/10) );NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;Y=X+NOISE;其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。2,把指定的噪声叠加到信号上去有标准噪声库NOISEX-92,其中带有白噪声、办公室噪声、工厂噪声、汽车噪声、坦克噪声等等,在信号处理中往往需要把库中的噪声叠加到信号中去,而噪声的采样频率与纯信号的采样频率往往不一致,需要采样频率的校准。function [Y,NOISE] = add_noisem(X,filepath_name,SNR,fs)% add_noisem add determinated noise to a signal.% X is signal, and its sample frequency is fs;% filepath_name is NOISE's path and name, and the SNR is signal to noise ratio in dB.[wavin,fs1,nbits]=wavread(filepath_name);if fs1~=fswavin1=resample(wavin,fs,fs1);endnx=size(X,1);NOISE=wavin1(1:nx);NOISE=NOISE-mean(NOISE);signal_power = 1/nx*sum(X.*X);noise_variance = signal_power / ( 10^(SNR/10) );NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;Y=X+NOISE;其中X是纯信号,filepath_name是指定噪声文件(.wav)的路径和文件名,SNR是要求的信噪比,fs是信号X的采样频率,Y是带噪信号,NOISE是叠加在信号上的噪声。3,检验带噪信号的信噪比信噪比的定义为信号能量              (纯信号)^2SNR=-----------------=--------------------------噪声能量        (带噪信号-纯信号)^2function snr=SNR_singlech(I,In)% 计算信噪比函数% I :original signal% In:noisy signal(ie. original signal + noise signal)snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signal powerPn=sum(sum((I-In).^2));           %noise powersnr=10*log10(Ps/Pn);其中I是纯信号,In是带噪信号,snr是信噪比以下给出调用上函数的例子可作参考:例一clear all; clc; close all;[filename,pathname]=uigetfile('*.wav','请选择语音文件:');[X,fs]=wavread([pathname filename]);[Y,NOISE] = noisegen(X,10);subplot 311; plot(X);subplot 312; plot(NOISE);subplot 313; plot(Y);mn=mean(NOISE)snr=SNR_singlech(X,Y)例二clear all; clc; close all;[filename,pathname]=uigetfile('*.wav','请选择语音文件:');[filename1,pathname1]=uigetfile('*.wav','请选择噪声文件:');filepath_name=[pathname1 filename1];[X,fs]=wavread([pathname filename]);[Y,NOISE] = add_noisem(X,filepath_name,10,fs);subplot 311; plot(X);subplot 312; plot(NOISE);subplot 313; plot(Y);mn=mean(NOISE)snr=SNR_singlech(X,Y)参考:http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=54155,再次感谢原作者的无私分享。

matlab 自定义的snr,Matlab信号添加噪声及信噪比SNR的计算相关推荐

  1. Matlab信号添加噪声及信噪比SNR的计算

    一.MATLAB中自带的高斯白噪声的两个函数 MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白 ...

  2. 输出信噪比公式_Matlab信号添加噪声及信噪比SNR的计算

    一.MATLAB中自带的高斯白噪声的两个函数 MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白 ...

  3. matlab 自定义对象,面向对象: MATLAB 的自定义类 [MATLAB]

    面向对象: MATLAB 的自定义类 [MATLAB] 这几天刚刚开始学习 MATLAB 的面向对象编程. 以前做的事情都是用 MATLAB 写一些简单的脚本或者函数, 这方面 MATLAB 成熟的函 ...

  4. matlab 自定义距离函数,用MATLAB做聚类分析时非常有用的自定义距离函数和标准化函数...

    聚类分析中,经常遇到观测值缺失的情况. 例如统计历史降水资料时,某个月的资料缺失了,这时用MATLAB做聚类分析时, 就需要自定义距离函数,处理nan的问题. 下面是相关的MATLAB函数,里面有例子 ...

  5. (matlab)自定义图像(matlab)

    clc; clear all; A=[0 230 255 60 30 100]; A=uint8(A); imshow(A,'InitialMagnification','fit') 如图: clc; ...

  6. 噪声概念: 信噪比(SNR)、噪声谱密度(NSD)、白噪声(n)、粉红噪声(1/f)

    SNR表示满量程信号功率与其他所有频率的总噪声功率之比 信噪比(Signal-to-noise ratio,缩写为 SNR 或 S/N),也称作信杂比或讯杂比. 信噪比,为有用信号功率(Power o ...

  7. matlab中给信号添加高斯白噪声的两种方法,awgn计算过程,randn函数

    y=awgn(x,snr,px_dBW) 给信号x添加噪声功率为某个值的高斯白噪声. snr为信噪比,单位dB. px_dBW为信号x的指定功率(注意,是指定功率,而不是x本身的功率),单位dBW. ...

  8. MATLAB添加噪声

    首先是用MATLAB自带的imnoise函数添加噪声. img= im2double(imread('D:\Matlab2018a\work\img.png'));%改为你要读入图片的路径;im2do ...

  9. 对一个信号添加带限高斯白噪声 Matlab实现

    clear; clc; close all;%% 产生一个时域信号 SignalInput = cos(2 * pi * 1000 * (1:1:2048).' / 5000); %% 设计一个带通滤 ...

最新文章

  1. 概念被滥用 你真的了解云计算吗?
  2. kill -3 获取threaddump信息---转载
  3. boost::fusion::as_map用法的测试程序
  4. 对话李飞飞,展望阿里云与MongoDB战略合作未来
  5. C++ STL之Vector
  6. [html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?
  7. python中的字符串操作及注意事项
  8. Linux 下 Tomcat 内存大小配置
  9. oracle 存储结构 语法 第一阶段
  10. 图书管理系统python代码课程设计报告_python代码实现图书管理系统
  11. java 按字节读文件_JAVA按字节读取文件的简单实例
  12. hdu2147PN图的画法
  13. java软件的安装过程
  14. winserver2012安装mysql8.0.22需要安装vc++2015时报错0x80240017未指定错误
  15. java数字转大写_java实现数字转大写的方法
  16. 余光中 听那冷冷的雨
  17. Beamer中数学符号字体
  18. 计算机网络协议教案反思,《TCP/IP协议分析》教学实践与反思
  19. python 计算置信区间_python 计算数据中值的置信区间
  20. EXCLE为什么双击横杠日期才能变成斜杠日期

热门文章

  1. autojs编写的网易云音乐和视频搜索脚本源代码免费分享开源
  2. MES管理系统生产调度管理功能的作用介绍
  3. 郭忆:网易数据库高可用架构最新进展!
  4. 《3D数学基础》提炼总结(一)3D数学和笛卡尔坐标系
  5. linux 查看网络流量来源_Linux查看网络流量
  6. 盲沟低比?不不不,是芒果的笔,今天学一下分布式文件存储数据库MongoDB。
  7. 2020华数杯全国大学生数学建模竞赛C题-脱贫帮扶绩效评价体系的构建与探究(二)(附MATLAB和Python代码)
  8. 二、计算机网络的标准化工作
  9. linux监控某个端口流量抓包,tcpdump命令 – 监听网络流量
  10. yj.iOS 仿微信长按摄像点击拍照