En este artículo, vamos a discutir la adición de » ruido gaussiano blanco » a señales como seno, coseno y onda cuadrada usando MATLAB. El ruido gaussiano blanco se puede agregar a las señales usando la función incorporada MATLAB/GNU-Octave awgn() . Aquí, «AWGN» significa «ruido gaussiano blanco aditivo».
AWGN es un modelo de ruido muy básico que se usa comúnmente en el sistema de comunicación, el procesamiento de señales y la teoría de la información para imitar el efecto de los procesos aleatorios que ocurren en la naturaleza.
Normalmente tenemos diferentes sintaxis para la función awgn() según la cantidad y el tipo de parámetros que se le pasan. Pero aquí, estudiaremos solo dos sintaxis que se usan más comúnmente en el sistema de comunicación y el procesamiento de señales.
Sintaxis:
awgn(entrada_señal, snr)
Esta sintaxis agregará el ruido gaussiano blanco a la señal de entrada pasada y mantendrá la SNR (relación señal/ruido) pasada en dB. De forma predeterminada, esta sintaxis considera la potencia de input_signal como 0 dBW (decibelio vatio).
awgn(señal_entrada, snr, potencia_señal)
Esta sintaxis hará lo mismo que la primera, pero la única diferencia es que aquí la potencia de input_signal no se considera cero, sino que debe pasarse como uno de los argumentos junto con input_signal y snr.
Nota: La potencia de la señal se puede pasar como «medida» o algún valor escalar para establecer el nivel de señal de input_signal, según el cual se determina el nivel de ruido adecuado en función del valor de snr.
Implementación paso a paso
Comprendamos la implementación con la ayuda de un ejemplo en el que agregaremos el ruido blanco gaussiano a las ondas sinusoidales.
Paso 1: Definir los parámetros requeridos
Matlab
% sampling frequency fs = 1000; % time sampling with step % size = 0.001 (1/fs) t = 0:1/fs:1; % frequency of input signal f = 20; % SNR to be maintained snr = 10;
Paso 2: Definir la señal de entrada y trazar
Matlab
% input message signal (sine wave) % generates a sine wave of frequency f st = sin(2 * pi * f * t); % plot the input signal (sine wave) % 'b' gives blue colour plot plot(t, st, 'b', 'Linewidth', 2); xlabel('Time'); ylabel('Amplitude'); title('Input Message Signal'); grid on;
Producción:
Paso 3: Agregar ruido gaussiano blanco a la señal y trazar
Matlab
% signal with white Gaussian noise % adds White Gaussian Noise to the signal st_nn = awgn(st, snr, 'measured'); % plot the noisy signal % 'r' gives red colour plot plot(t, st_nn, 'r', 'Linewidth', 2); xlabel('Time'); ylabel('Amplitude'); title('Signal After Addition of Noise'); grid on;
Producción:
Veamos otro ejemplo Adición de ruido gaussiano blanco a onda cuadrada. Tenemos que seguir los mismos tres pasos anteriores para agregar el ruido gaussiano blanco a la onda cuadrada. Pero esta vez representaremos tanto la señal de entrada como la señal ruidosa simultáneamente en la misma figura para analizar los cambios cuidadosamente.
Matlab
% sampling frequency fs = 1000; % time sampling with step size % 0.001 (1/fs) t = 0:1/fs:1; % frequency of input signal f = 10; % SNR to be maintained snr = 5; % Input Message Signal % generates a square wave of % frequency f st = square(2 * pi * f * t); subplot(2,1,1); % 'b' gives blue colour plot plot(t,st,'b','Linewidth',2); xlabel('Time'); ylabel('Amplitude'); title('Input Message Signal'); grid on; % signal with white Gaussian % noise adds White Gaussian % Noise to the signal st_nn = awgn(st,snr,'measured'); % gives a blue colour plot of % square wave subplot(2,1,2); plot(t, st, 'b', 'Linewidth', 2); % puts the next graph on the % same plot hold on; % gives a red colour plot of the % AWGN noise plot(t, st_nn, 'r'); xlabel('Time'); ylabel('Amplitude'); title('Signal After Addition of Noise'); grid on; hold off;
Producción: