-
2020-04-28 09:13:30
对于三条线的SNR对数函数的图,用semilogy很合适,从EP那里学来的,超级简单,半天的时间就差不多搞定了。
算是学过MATLAB的一点证明吧。有空继续添加,未完待续
更多相关内容 -
matlab开发-SNR
2019-08-23 13:47:43matlab开发-SNR。本matlab练习计算并绘制量化语音文件的信噪比。 -
matlab程序,求信噪比SNR.m
2020-06-03 17:46:29matlab程序,用于SNR信噪比,可直接在程序中以函数名的形式调用,用于检测信号滤波的准确度。可用于初学者测试学习使用。 -
MATLAB 图像 SNR计算
2018-01-21 17:09:25MATLAB编写的图像 SNR信噪比计算,m文件,输入图片参数可以直接运行 -
SNR,SNDR,THD,ENOB,SFDR的matlab计算程序
2019-06-20 14:54:35matlab实现SNR,SNDR,THD,ENOB,SFDR的计算,运行时先将.txt文件放入指定目录 -
matlab方位角计算代码-gnssSNR:从RINEX文件中剥离SNR数据以及卫星方位角和仰角的代码
2021-05-20 01:07:32matlab方位角计算代码 -
SNR_BER:BER 和 SNR 图-matlab开发
2021-06-01 11:13:12现在,对于 SNR 的特定值,将此噪声添加到信号中(因为噪声是加性的 -AWGN),模拟信道噪声和大小为 15k 或 20k 的噪声信号向量到达接收器的影响。 现在根据最大似然原理实现您自己的简单接收器决策过程。 这是显然... -
Matlab中的snr
2019-05-05 15:22:47一 matlab中产生高斯白噪声 可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白...一 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以瓦特为单位。
例子:
X= sqrt(2)*sin(0:pi/1000000:6*pi); %产生正弦信号
Y = awgn(X,10,'measured'); %加入信噪比为10db的噪声,加入前预估信号的功率(强度)
sigPower = sum(abs(X).^2)/length(X) %求出信号功率
noisePower=sum(abs(Y-X).^2)/length(Y-X) %求出噪声功率
SNR=10*log10(sigPower/noisePower) %由信噪比定义求出信噪比,单位为db
二 matlab中信噪比的添加方法:
1. 发端首先进行能量归一化
2. 在收端根据同样的采样率计算1bit长度的能量即Eb
3. SNR=10log(ebno)=> ebno=Eb/N0 => N0=Eb/ebno
4. N0=2(sigma)^2 => sigma=sqrt(N0/2)
5. noise=sigma*randn(1,0) 添加高斯白噪声
三 Matlab中计算信噪比方式:
1.代码部分
function snr=SNR(I,In)
% 计算信号噪声比函数
% I :original signal
% In:noisy signal(ie. Original signal + noise signal)
% snr=10*log10(sigma2(I2)/sigma2(I2-I1))
[row,col,nchannel]=size(I);
snr=0;
if nchannel==1%gray image
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((I-In).^2));%noise power
snr=10*log10(Ps/Pn);
elseif nchannel==3%color image
for i=1:3
Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise power
snr=snr+10*log10(Ps/Pn);
end
snr=snr/3;
end
2.检验带噪信号的信噪比
信号能量 (纯信号)^2
SNR信噪比=-----------------=--------------------------
噪声能量 (带噪信号-纯信号)^2噪声的平均功率 噪声单边功率普密度*符号带宽
Eb/T 在限带情况下 T*B=1 Eb
= ---------- ==================
N0*B N0
实际系统中噪声的单边功率普密度N0受温度和常数K决定的,在一定条件下为固定值;信噪比与信号能量的强弱成正比。在仿真中,为了简化模型,通常采用固定输入信号幅度,改变N0来起到SNR的变化。
其中的Eb是在相干接收条件下解调后信号能量,而系统接收的信噪比通常是加在接收输入端,也就是解调前。为了令Eb在解调前后的能量统一,在发送端必须采用能量的归一化。
归一化方法:
_ x(n)
x(n) =-------------------------- n属于(1,N) N为1bit内采样点数
sqrt(Sum(x(n)^2))
-
work_matlab_SSIM无参考_PSNR_ssim_图像无参考_
2021-10-01 00:51:36MATLAB实现PSNR 和SSIM算法和一种针对模糊图像的无参考评价。(图像像素需要相同) -
测量 PSNR 和 SNR 和 MSE:比较两个信号-matlab开发
2021-05-30 19:11:00此函数用于与 matices 或数据数组之间的比较 -
Matlab信号添加噪声及信噪比SNR的计算
2021-04-21 21:41:19一、MATLAB中自带的高斯白噪声的两个函数MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。1. WGN:产生高斯白噪声...一、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计算THD、SNR、SINAD
2021-11-04 18:09:02Matlab计算THD、SNR、SINAD %计算THD、SNR、SINAD的脚本 clc;clear; datas = load('C:\test.txt'); %数据路径 fs = 100000; %采样率 NumHarmonics = 6; %谐波个数 THD = thd(datas,fs,NumHarmonics); %计算THD THD_P...Matlab计算THD、SNR、SINAD
%计算THD、SNR、SINAD的脚本 clc;clear; datas = load('C:\test.txt'); %数据路径 fs = 100000; %采样率 NumHarmonics = 6; %谐波个数 THD = thd(datas,fs,NumHarmonics); %计算THD THD_P = 100*(10^(THD/20)); %THD转换为百分比 SNR = snr(datas,fs); %计算SNR SINAD = sinad(datas,fs); %计算SINAD %输出打印THD、SNR、SINAD fprintf('THD = %.10gdb\n',THD); fprintf('THD_P = %.10g%%\n',THD_P); fprintf('SNR = %.10gdB\n',SNR); fprintf('SINAD = %.10gdB\n',SINAD);
-
snr:snr 函数以分贝或幅度计算信噪比-matlab开发
2021-05-30 13:03:39函数 snr 以分贝或幅度计算信噪比。 -
信噪比SNR MATLAB程序
2016-06-08 16:08:26信噪比SNR的求解,MATLAB程序详解 -
matlab 计算SNR 源码.txt
2021-01-30 20:16:13计算ADC的snr源码 -
matlab作 snr-bler图
2018-09-27 22:45:30基于在做完编译码之后需要测试ldpc编译码的snr-bler性能,在此,将测得的snr bler数据画出snr-bler图是工作的一小部分,为了便于工作,在matlab平台上写了一个m文件来实现此功能。 m文件中的代码如下: %作图一 a=... -
SNR:此 MATLAB 练习计算并绘制量化语音文件的 SNR。-matlab开发
2021-05-30 05:15:21此 MATLAB 练习使用统一量化器和 mu 律量化器之一或两者计算并绘制量化语音文件的 SNR,适用于一定范围的比特率和用户指定的 mu 值。 -
SNR MATLAB CODE
2021-10-03 08:22:11unction SNR=SNR(K,J) N=J-K; L=(J-mean(mean(J))).^2; X=(N-mean(mean(N))).^2; a=sum(sum(L)); b=sum(sum(X)); SNR=20*log10(a/b); -
MATLAB生成随机码元以及指定SNR数据
2022-01-07 22:39:32MATLAB生成随机码元以及指定SNR数据tips生成随机码元【0或者1】生成随机码元【-1或者1】将随机数生成器重置为默认设置,以产生可重复的结果。生成一个白噪声随机向量生成指定SNR的数据 tips 1、生成随机码元【0或者... -
转~~ SNR + Eb/N0
2021-04-18 16:45:33SNR,或者我们平时说的信噪比,其实是一个不精确的...Q:在《现代通信系统——使用matlab》一书中,一些调制方式的MonteCarlo仿真性能曲线中,横轴是用Eb/No来表示的,而matlab代码是用的却是SNR,很多人都说这两个信... -
MATLAB中wnoise函数信噪比的问题
2021-04-22 00:50:40在MATLAB中wnoise的解释如下:WNOISE Generate noisy wavelet testdata.X = WNOISE(FUN,N)returns values of the test functiongiven by FUN, on a2^N sample of [0,1].[X,XN] =WNOISE(FUN,N,SQRT_SNR) returns the ... -
EbNo(EbN0)和SNR
2021-05-07 02:49:08A1:因为要加入高斯白噪声信道,高斯白噪声信道的噪声参数是与SNR直接相关的,所以要将EbNo转换为SNR。Q2:为什么仿真要用EbNo,而不用SNR呢?A1:因为用EbNo可以直观的看到系统性能,比如采用只采用QPSK,那么BER... -
如何使用 snr 绘制多条曲线:该程序将学习如何使用 snr 绘制多条曲线。-matlab开发
2021-06-01 11:53:34它使用符号学和 100000 符号表示传输。 -
【matlab】Matlab信号添加噪声及信噪比SNR的计算
2021-04-24 12:09:01转载自:http://blog.csdn.net/han____shuai/article/details/510873831、MATLAB中自带的高斯白噪声的两个函数MATLAB中产生高斯白噪声很是方便,能够直接应用两个函数,一个是WGN,另外一个是AWGN。WGN用于产生高斯... -
QAM误码率与SNR的MATLAB仿真
2019-03-12 00:18:50仿真在LTE中16QAM和64QAM信号的SNR与误码率间的关系。即实现了误码率与SNR间的关系,又实现了误比特率与SNR间的关系,还实现了添加高斯白噪声时的实际效果与理论值间的差别比较 -
QPSK(BER 与 SNR)与 awgn:BER-matlab开发
2021-05-30 09:36:29QPSK(AWGN)中理论误码率与实际误码率的比较。 -
常用MATLAB函数详解及用法
2021-04-24 14:29:42《常用MATLAB函数详解及用法》由会员分享,可在线阅读,更多相关《常用MATLAB函数详解及用法(10页珍藏版)》请在人人文库网上搜索。1、随机信号产生随机信号产生 rand:产生:产生均匀分布均匀分布的随机数的随机数 ... -
matlab小波分析_MATLAB小波变换_小波分析去噪_小波去噪_小波SNR_小波去噪snr
2021-09-10 17:37:46matlab 一维二维小波分析处理,并比较不同小波去噪方法的去噪效果,指标为SNR和MSE