精华内容
下载资源
问答
  • Matlab——高斯白噪声处理

    千次阅读 2018-07-28 23:14:00
    1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 I=imread('eight.tif');... %加入高斯白噪声 J=A; M=3; %设置叠加次数 J=im2double(J); I=im2double(...

    1、代码如下:

    close all;clear all;clc;  %关闭所有图形窗口,清除工作空间所有变量,清空命令行
    I=imread('eight.tif');
    A=imnoise(I,'gaussian',0,0.05); %加入高斯白噪声
    J=A;
    M=3;                            %设置叠加次数
    J=im2double(J);
    I=im2double(I);
    for i=1:M
        J=imadd(J,I);               %对原图像与带噪声图像进行多次叠加
    end
    avg_A=J/(M+1);                  %叠加的平均图像
    set(0,'defaultFigurePosition',[100,100,1000,500]);
    set(0,'defaultFigureColor',[1 1 1]);
    subplot(121),imshow(A);         %显示加入椒盐噪声后的图像
    subplot(122),imshow(avg_A);     %显示加入乘性噪声后的图像
    
    

    2、运行效果如下:

    展开全文
  • matlab awgn函数加入高斯白噪声

    千次阅读 2020-09-15 21:36:23
    awgn函数可以将白色高斯噪声添加到信号中。

    信噪比

    信噪比,电子设备或者通信系统中有效信号和噪声的比值,英文名称叫做SNRS/NSIGNAL-NOISE RATIO);

    awgn描述

    awgn函数可以将白色高斯噪声添加到信号中。

    语法

    y = awgn(x,snr) 
    y = awgn(x,snr,sigpower) 
    y = awgn(x,snr,'measured') 
    y = awgn(x,snr,sigpower,state) 
    y = awgn(x,snr,'measured',state) 
    y = awgn(...,powertype) 
    

    描述

    • y = awgn(x,snr)将白高斯噪声添加到向量信号x中。标量snr指定了每一个采样点信号与噪声的比率,单位为dB。如果x是复数的,awgn将会添加复数噪声。这个语法假设x的能量是0dBW。
    • y = awgn(x,snr,sigpower)和上面的语法相同,除了sigpower是x的能量,单位为dBW。
    • y = awgn(x,snr,‘measured’)和y = awgn(x,snr)是相同的,除了agwn在添加噪声之前测量了x的能量。
    • y = awgn(x,snr,sigpower,state)和y = awgn(x,snr,sigpower)是相同的,除了awgn首先重置了正态随机数产生器randn的状态为整数状态。
    • y = awgn(x,snr,‘measured’,state)和y = awgn(x,snr,‘measured’)是相同的,除了awgn首先重置了正态随机数产生器randn的状态为整数状态。
    • y = awgn(…,powertype)和前面的语法相同,除了字符串powertype指定了snr和sigpower的单位。powertype的选择有’db’ and ‘linear’,如果powertype是’db’,那么snr是按照dB为单位测量的,sigpower是按照dBW为单位测量的。如果powertype是线性的,snr是按照一个比率测量的,sigpower是以瓦特为单位测量的。Relationship Among SNR, Es/N0, and Eb/N0
      对于SNR和其他的噪声相对能量测量的关系,查看Describing the Noise Level of an AWGN Channel。

    例子

    %	Example 1: 
             % To specify the power of X to be 0 dBW and add noise to produce
             % an SNR of 10dB, use:
             X = sqrt(2)*sin(0:pi/8:6*pi);
             Y = awgn(X,10,0);
     
     %	Example 2: 
             % To specify the power of X to be 3 Watts and add noise to
             % produce a linear SNR of 4, use:
             X = sqrt(2)*sin(0:pi/8:6*pi);
             Y = awgn(X,4,3,'linear');
     
     %   Example 3: 
             % To cause awgn to measure the power of X and add noise to
             % produce a linear SNR of 4, use:
             X = sqrt(2)*sin(0:pi/8:6*pi);
             Y = awgn(X,4,'measured','linear');
     
     %   Example 4: 
             % To specify the power of X to be 0 dBW, add noise to produce
             % an SNR of 10dB, and utilize a local random stream, use:
             S = RandStream('mt19937ar','seed',5489);
             X = sqrt(2)*sin(0:pi/8:6*pi);
             Y = awgn(X,10,0,S);
     
    %    Example 5: 
             % To specify the power of X to be 0 dBW, add noise to produce
             % an SNR of 10dB, and produce reproducible results, use:
             reset(RandStream.getGlobalStream)
             X = sqrt(2)*sin(0:pi/8:6*pi);
             Y = awgn(X,10,0,S);
    

    matlab 程序 正弦+白噪声

    
    f1=50;  	%  频率
    fs=1000;  	%  采样频率
    Ts=1/fs;  	%  采样间隔
    N=200;    	%  采样点数
    n=1:N;
    y=sin(2*pi*f1*n*Ts);
    snr=30;		%  信噪比
    r=awgn(y,snr);
    subplot(2,1,1);
    plot(y,'black')
    axis([-inf,inf,-2,2,])
    title('原信号');
    subplot(2,1,2);
    %hold on
    plot(r,'black')
    axis([-inf,inf,-2,2,])
    title('原信号+高斯噪声');
    
    

    SNR=10

    SNR=20

    SNR=30

    matlab 程序 锯齿波+噪声

    t = 0:.1:20;
    x = sawtooth(t); % Create sawtooth signal.
    snr=10;
    
    y = awgn(x,snr,'measured'); % Add white Gaussian noise.
    subplot(1,3,1);
    plot(t,x,t,y) % Plot both signals.
    legend('Original signal','Signal with AWGN');
    axis([-inf,inf,-1.5,1.5,])
    title('SNR=10');
    
    snr=20;
    y = awgn(x,snr,'measured'); % Add white Gaussian noise.
    subplot(1,3,2);
    plot(t,x,t,y) % Plot both signals.
    legend('Original signal','Signal with AWGN');
    axis([-inf,inf,-1.5,1.5,])
    title('SNR=20');
    
    snr=30;
    y = awgn(x,snr,'measured'); % Add white Gaussian noise.
    subplot(1,3,3);
    plot(t,x,t,y) % Plot both signals.
    legend('Original signal','Signal with AWGN');
    axis([-inf,inf,-1.5,1.5,])
    title('SNR=30');
    

    修改信噪比

    展开全文
  • 本文主要介绍matlab中的Communication System Toolbox来实现QPSK调制、解调及加入高斯白噪声信道等函数的使用过程,并设置不同的信噪进行仿真与理论值进行比较。首先设置相关仿真常数如下:FRM=2048; % 一帧的比特数...

    92221de776bd6a94980719e3cc5d4828.png

    本文主要介绍matlab中的Communication System Toolbox来实现QPSK调制、解调及加入高斯白噪声信道等函数的使用过程,并设置不同的信噪进行仿真与理论值进行比较。

    首先设置相关仿真常数如下:

    FRM=2048; % 一帧的比特数
    MaxNumErrs=200; % 仿真最大误比特数,仿真循环停止条件
    MaxNumBits=1e7; % 仿真最大比特数,仿真循环停止条件
    EbNo_vector=0:10; % 仿真变量为比特能量与噪声能量谱密度的比值
    BER_vector = zeros(size(EbNo_vector)); % 误比特率向量

    在此需要说明的是,使用比特信噪比EbNo作为仿真变量是由于EbN可以更直观的反应系统的性能,更适合数字通信中衡量系统性能的指标,而SNR是信号功率与噪声功率之比,更适合于模拟通信系统。简单来说,对于数字通信系统,当EbNo一定值时,误比特率需要低于多少说明系统设计满足要求,且容易与理论值进行比较。

    调用Communication System Toolbox中的QPSK调制、解调、高斯白噪声信道模块及统计误码率模块:

    Modulator = comm.QPSKModulator('BitInput',true); % QPSK调制模块
    AWGN = comm.AWGNChannel; % 高斯白噪声模块
    DeModulator = comm.QPSKDemodulator('BitOutput',true); % QPSK解调模块
    BitError = comm.ErrorRate; %误码率统计模块

    仿真主循环:

    for EbNo=EbNo_vector
        snr = EbNo+10*log10(2); %将调制前的EbNo转换为调制后的EbNo
        AWGN.EbNo=snr; % 设置高斯白噪声模块的EbNo值
        numErrs=0; numBits=0; results=zeros(3,1); % 相关统计参数初始化
        while ((numErrs<MaxNumErrs) && (numBits<MaxNumBits)) %循环退出条件
            u = randi([0 1], FRM, 1); % 随机产生一帧原始信号比特流
            mod_sig = Modulator(u);   % qpsk调制
            rx_sig = AWGN(mod_sig);   % 经过高斯白噪声信道 
            y = DeModulator(rx_sig);  % qpsk解调
            results = BitError(u, y );% 统计误比特率
            numErrs = results(2); % 总误比特数
            numBits = results(3); % 总比特数
        end
        ber=results(1);  % 误比特率
        bits=results(3); % 总比特数
        reset(BitError); % 重置BitError模块
        BER_vector(EbNo+1)=ber; 
    end

    在此需要特别注意的是将原始比特流转换为qpsk码时,是将2bit二进制数转换为一个qpsk码,即k=2,此时转换后的EbNo与转换前存在以下关系:

    equation?tex=EbNo_%7Bqpsk%7D%3DEbNo_%7Bbit%7D%2B10%5Ctimes+log_%7B10%7D%28k%29%5C%5C

    该公式也比较好理解,就是将2个bit的数据转化为一个qpsk符号时,EbNo之间的关系转化。

    若不使用上述写法,也可以讲comm.AWGN中的'BitPerSymbol'设置为k,这种写法更为简单,经过测试,得到的结果相同:

    AWGN = comm.AWGNChannel('BitsPerSymbol',2);
    for EbNo=EbNo_vector
        AWGN.EbNo=EbNo;
        AWGN.EbNo=snr; % 设置高斯白噪声模块的EbNo值
        numErrs=0; numBits=0; results=zeros(3,1); % 相关统计参数初始化
        while ((numErrs<MaxNumErrs) && (numBits<MaxNumBits)) %循环退出条件
            u = randi([0 1], FRM, 1); % 随机产生一帧原始信号比特流
            mod_sig = Modulator(u);   % qpsk调制
            rx_sig = AWGN(mod_sig);   % 经过高斯白噪声信道 
            y = DeModulator(rx_sig);  % qpsk解调
            results = BitError(u, y );% 统计误比特率
            numErrs = results(2); % 总误比特数
            numBits = results(3); % 总比特数
        end
        ber=results(1);  % 误比特率
        bits=results(3); % 总比特数
        reset(BitError); % 重置BitError模块
        BER_vector(EbNo+1)=ber; 
    end

    在通过调制后EbNo一定要注意与原始EbNo之间的转化,不然得到的误比特率曲线和理论值不同。

    comm.BitError的返回值为一个向量,其中第一维为误比特率,第二维为误无比特数,第三维为传输总比特数。

    QPSK的理论误比特率值如下:

    equation?tex=BER%3D%5Cfrac%7B1%7D%7B2%7Derfc%28%5Csqrt%7B%5Cfrac%7BE_b%7D%7BN_0%7D%7D%29%5C%5C

    其中erfc为误差函数,其定义如下:

    equation?tex=erfc%3D%5Cfrac%7B2%7D%7B%5Csqrt%7B%5Cpi%7D%7D%5Cint_0%5E%7B%5Cbeta%7De%5E%7B-y%5E2%7Ddy%5C%5C

    最后绘制图像即可:

    EbNoLin = 10.^(EbNo_vector/10); %db --> 值
    theoretical_results = 0.5*erfc(sqrt(EbNoLin)); %qpsk误码率理论值
    semilogy(EbNo_vector, BER_vector) 
    grid;title('BER vs. EbNo - QPSK modulation');
    xlabel('Eb/No (dB)');ylabel('BER');hold;
    semilogy(EbNo_vector,theoretical_results,'dr');hold;
    legend('Simulation','Theoretical');

    完整代码如下:

    FRM=2048; % 一帧的比特数
    MaxNumErrs=200; % 仿真最大误比特数,仿真循环停止条件
    MaxNumBits=1e7; % 仿真最大比特数,仿真循环停止条件
    EbNo_vector=0:10; % 仿真变量为比特能量与噪声能量谱密度的比值
    BER_vector = zeros(size(EbNo_vector)); % 误比特率向量
    
    Modulator = comm.QPSKModulator('BitInput',true); % QPSK调制模块
    AWGN = comm.AWGNChannel; % 高斯白噪声模块
    DeModulator = comm.QPSKDemodulator('BitOutput',true); % QPSK解调模块
    BitError = comm.ErrorRate; %误码率统计模块
    
    for EbNo=EbNo_vector
        snr = EbNo+10*log10(2); %将调制前的EbNo转换为调制后的EbNo
        AWGN.EbNo=snr; % 设置高斯白噪声模块的EbNo值
        numErrs=0; numBits=0; results=zeros(3,1); % 相关统计参数初始化
        while ((numErrs<MaxNumErrs) && (numBits<MaxNumBits)) %循环退出条件
            u = randi([0 1], FRM, 1); % 随机产生一帧原始信号比特流
            mod_sig = Modulator(u);   % qpsk调制
            rx_sig = AWGN(mod_sig);   % 经过高斯白噪声信道 
            y = DeModulator(rx_sig);  % qpsk解调
            results = BitError(u, y );% 统计误比特率
            numErrs = results(2); % 总误比特数
            numBits = results(3); % 总比特数
        end
        ber=results(1);  % 误比特率
        bits=results(3); % 总比特数
        reset(BitError); % 重置BitError模块
        BER_vector(EbNo+1)=ber; 
    end
    
    EbNoLin = 10.^(EbNo_vector/10); %db --> 值
    theoretical_results = 0.5*erfc(sqrt(EbNoLin)); %qpsk误码率理论值
    semilogy(EbNo_vector, BER_vector) 
    grid;title('BER vs. EbNo - QPSK modulation');
    xlabel('Eb/No (dB)');ylabel('BER');hold;
    semilogy(EbNo_vector,theoretical_results,'dr');hold;
    legend('Simulation','Theoretical');

    仿真结果如下:

    b2a20197f3ea45684b24928e350deee3.png
    高斯白噪声信道下QPSK调制的误比特率仿真与理论图

    参考文献:

    1. Understanding LTE with MATLAB
    2. https://www.mathworks.com/help/comm/ref/comm.awgnchannel-system-object.html
    3. Compute bit or symbol error rate of input data
    4. AWGN Channel - MATLAB & Simulink

    其中代码主要源自Understanding LTE with MATLAB》,本文主要对其进行注释、分析与方便自己仔细理解代码思路,学习写文章的过程,后期将放上自己学习过程中写的其他一些分析与代码!!

    欢迎大家评论、私信交流、批评与指正!!

    展开全文
  • AWGN:在某一信号中加入高斯白噪声y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为...

    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以瓦特为单位

    clear all;

    % To specify the power of X to be 0 dBW and add noise to produce

    % an SNR of 10dB, use:

    X = sqrt(2)*sin(0:pi/8:6*pi);

    Y = awgn(X,10,0);

    % To specify the power of X to be 3 Watts and add noise to

    % produce a linear SNR of 4, use:

    Y1 = awgn(X,4,3,'linear');

    % To cause awgn to measure the power of X and add noise to

    % produce a linear SNR of 4, use:

    Y2 = awgn(X,4,'measured','linear'); %

    subplot(411);

    plot(X);

    subplot(412);

    plot(Y);

    subplot(413);

    plot(Y1);

    subplot(414);

    plot(Y2);

    展开全文
  • 高斯白噪音的定义、概念及matlab实现 ...随着信噪比的增强,混合数据的频率分布逐渐与高斯白噪声一致 随着信噪比的增强,混合数据的幅值频谱逐渐混乱不清 信噪比在-4-10内的幅值频谱特性还清晰可辨
  • Matlab中添加高斯白噪声

    千次阅读 2007-04-26 11:37:00
    WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。1. WGN:产生高斯白噪声y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位...
  • Matlab】awgn高斯白噪声函数

    千次阅读 2015-12-06 16:48:00
    AWGN:在某一信号中加入高斯白噪声y = awgn(x,SNR)在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。 y = awgn(x,SNR,SIGPOWER)如果SIGPOWER是数值,则其代表以dBW为...
  • 有助于MATLAB初学者了解调制与解调方法,提高自己自学能力
  • 本文主要介绍matlab中的Communication System Toolbox来实现QPSK调制、解调及加入高斯白噪声信道等函数的使用过程,并设置不同的信噪进行仿真与理论值进行比较。首先设置相关仿真常数如下:FRM=2048; % 一帧的比特数...
  • 1. 高斯白噪声 使用AWGN函数向Y加高斯白噪声。 AWGN函数的用法 基础知识 dBw与dBm:dBw 与dBm一样,dBw是一个表示功率绝对值的单位(以1W功率为基准,dBm是以1mW为基准)。 信噪比:信噪比的计量单位是dB,其...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声  y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。  y = wgn(m,n,p,imp
  • Matlab 给信号加高斯白噪声AWGN

    千次阅读 2018-03-20 17:11:00
    AWGN:在某一信号中加入高斯白噪声y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm...
  • 展开全部给原始的62616964757a686964616fe59b9ee7ad9431333238656564语音信号...要加入白噪声只需把余弦噪声换成白噪声,用randn函数产生高斯分布序列。我的源程序如下:clc;fs=8000;x1=wavread('pb8k.wav');t=(0...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。1. WGN:产生高斯白噪声y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。y = wgn(m,n,p,imp) 以欧姆(Ohm)为单位...
  • 如何产生高斯白噪声

    千次阅读 2006-11-07 05:33:00
    如何产生高斯白噪声查了一下关于高斯...WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。
  • matlab产生白噪声.doc

    2020-04-20 07:42:48
    MATLAB中产生高斯白噪声的两个函数 MATLAB中产生高斯白噪声非常方便可以直接应用两个函数一个是WGN另一个是AWGNWGN用于产生高斯白噪声AWGN则用于在某一信号中加入高斯白噪声 1. WGN产生高斯白噪声 y = wgn(m,n,p) ...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。 1. WGN:产生高斯白噪声  y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。  y = wgn(m,n,p,imp) 以欧姆...

空空如也

空空如也

1 2 3 4 5 6
收藏数 110
精华内容 44
关键字:

matlab加入高斯白噪声

matlab 订阅