精华内容
下载资源
问答
  • 图像加入高斯噪声和平滑处理代码 a=imread('lena.jpg'); subplot(221); imshow(a); title ('原始图像'); Inoise=imnoise(a,'gaussian',0.1,0.004);%对图像加入高斯噪声 subplot(222); imshow(Inoise); title('加入...

    图像加入高斯噪声和平滑处理代码

    a=imread('lena.jpg');
    subplot(221);
    imshow(a);
    title ('原始图像');
    Inoise=imnoise(a,'gaussian',0.1,0.004);%对图像加入高斯噪声
    subplot(222);
    imshow(Inoise);
    title('加入高斯噪声后的图像');
    %定制卷积
    h=ones(3,3)/5;
    h(1,1)=0;
    h(1,3)=0;
    h(3,1)=0;
    h(3,3)=0;
    %进行平滑处理
    filters=imfilter(Inoise,h);
    subplot(223);
    imshow(filters);
    title('平滑后的图像')


     

    实验结果:

    展开全文
  • 如何在图像中添加标准偏差为10的高斯噪声? 最直接的方式就是使用MATLAB提供的函数imnoise(), 根据帮助文档中的调用格式 J = imnoise(I, ‘gaussian’, M, V)(M 为均值,V为方差),想当然的将语句写为J = imnoise(I,...

    1.添加标准偏差为10的高斯噪声:imnoise
    最直接的方式就是使用MATLAB提供的函数imnoise(), 根据帮助文档中的调用格式 J = imnoise(I, ‘gaussian’, M, V)(M 为均值,V为方差),想当然的将语句写为J = imnoise(I, ‘gaussian’, 0, 10^2),但是运行后发现完全不是预期的效果,因为加噪后的图像基本是一片白色,源图像几乎完全被淹没在噪声中。

    在经过仔细阅读文档后发现,其实MATLAB的说明文档已经写得很清楚,现摘出如下:

    J = imnoise(I,type,parameters) Depending on type, you can specify additional parameters to imnoise. All numerical parameters are normalized— they correspond to operations with images with intensities ranging from 0 to 1.

    其中最关键的就是 normalized,即归一化,方差值在0~1之间。即默认的M,V值分别为0, 0.01(注意此处的方差形式)。

    所以最终的结论就是 需要对方差归一化处理 ,比如此处要对一幅256*256的图像加入标准偏差为10的高斯噪声,那么相应的语句应为:

    J = imnoise(I, 'gaussian', 0, 10^2/255^2)
    

    2.设计高斯核算子:fspecial

    f1 = fspecial('gaussian',h_size,σ) ;
    //f1 = fspecial('gaussian',5*5,2) ;
    

    σ越大或滤波器尺寸越大,图像越模糊

    3.将算子与加入噪声的图像进行卷积imfilter

    im1 = imfilter(IM,f1,'replicate');
    
    展开全文
  • 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》,本文主要对其进行注释、分析与方便自己仔细理解代码思路,学习写文章的过程,后期将放上自己学习过程中写的其他一些分析与代码!!

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

    展开全文
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯噪声。 1. WGN:产生高斯白噪声  y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。  y = wgn(m,n,p,imp) 以欧姆...
  • 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(...
  • 针对超分辨率图像处理对图像加入不同类型的高斯噪声matlab代码
  • 本程序通过MATLAB实现,主要实现向图像中加入高斯噪声和椒盐噪声,内附有实验结果
  • %%%%%%%%%%%%%%%%%%%加入高斯噪声函数,mean=0,standard dev=0.001 subplot(2,2,3) imshow(I2); subplot(2,2,4) mesh(x,y,I2) colormap jet ; T=zeros(w,h) I3=imnoise(I1,'salt & pepper',0.0005);%%%%%%%%%%%%%%%...
  • WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯噪声。 1.WGN:产生高斯白噪声 y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 y = wgn(m,n,p,imp) 以欧姆(Ohm)为...
  • 很好的matlab程序关于高斯噪声的详细算法。
  • 高斯白噪音的定义、概念及matlab实现 ...随着信噪比的增强,混合数据的频率分布逐渐与高斯噪声一致 随着信噪比的增强,混合数据的幅值频谱逐渐混乱不清 信噪比在-4-10内的幅值频谱特性还清晰可辨
  • AWGN:在某一信号中加入高斯噪声y = awgn(x,SNR) 在信号x中加入高斯噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为...
  • 使用matlab向已有的三维信号,如Y = (32,32,512)中的每一个向量(1,1,512)加入特定分布的噪声。 1. 高斯噪声 使用AWGN函数向Y加高斯噪声。 AWGN函数的用法 基础知识 dBw与dBm:dBw 与dBm一样,dBw是一个...
  • 有助于MATLAB初学者了解调制与解调方法,提高自己自学能力
  • 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中的Communication System Toolbox来实现QPSK调制、解调及加入高斯噪声信道等函数的使用过程,并设置不同的信噪进行仿真与理论值进行比较。首先设置相关仿真常数如下:FRM=2048; % 一帧的比特数...
  • M=imread('go.jpg'); %读取图像 [ROW,COL, DIM] = size(M);%保存图像尺寸 subplot(3,3,1),imshow(M),title('original');%显示原始图像 ... %加入高斯躁声 subplot(3,3,4),imshow(P1),title('gaussian noise...
  • 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为...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 193
精华内容 77
关键字:

matlab加入高斯噪声

matlab 订阅