如何在MATLAB中为信号添加高斯白噪声?
在所有频率上具有平坦功率谱密度 (PSD) 的噪声信号称为高斯白噪声或白噪声。在本教程中,我将解释如何使用MATLAB为信号添加高斯白噪声。但在此之前,让我们简要概述一下高斯白噪声。
什么是高斯白噪声?
在指定频率范围内所有频率具有相同能量的噪声信号称为高斯白噪声。因此,高斯白噪声在所有频率上具有平坦的功率谱密度 (PSD)。
在高斯白噪声的情况下,“白”表示噪声信号具有与光学中的白光相同的特性,即包含所有可见光颜色,且比例相同。“高斯”表示噪声信号的幅度遵循高斯分布。其中,高斯分布具有钟形曲线。
高斯白噪声用于信号处理中,以分析和模拟实际系统中可能发生的现实世界随机干扰。
现在,让我们讨论如何使用MATLAB为信号添加高斯白噪声。
为信号添加高斯白噪声
在MATLAB中,有一个内置函数“awgn”,用于为信号添加高斯白噪声。此处解释了为信号添加高斯白噪声的分步过程
步骤(1) – 根据输入信号的持续时间指定一个时间向量。此向量将用于生成输入信号,也用作图中的x轴。
步骤(2) – 使用时间向量并生成所需波形和参数的输入信号。
步骤(3) – 计算信号功率。
步骤(4) – 设置信噪比 (SNR)。
步骤(5) – 使用“awgn”函数为信号添加高斯白噪声。
步骤(6) – 绘制生成的信号。
现在,让我们通过示例来实际理解这些步骤。
如前所述,我们有一个内置的MATLAB函数“awgn”来为信号添加高斯白噪声。但是,此函数可以根据噪声级别、信号功率等参数具有各种语法格式。
“awgn”函数常用的语法格式如下所示
Y = awgn(X, snr)
Y = awgn(X, snr, signalpower)
Y = awgn(X, snr, signalpower, randobject)
Y = awgn(X, snr, signalpower, seed)
Y = awgn(___, powertype)
让我们详细讨论每种语法以及示例程序。
基于指定的SNR添加高斯白噪声到信号
要基于指定的SNR(信噪比)为信号添加高斯白噪声,请使用“awgn”函数的以下语法
Y = awgn(X, snr);
此处,X是输入信号,snr是信噪比,Y是噪声信号。
示例
此处,X是输入信号,snr是信噪比,Y是噪声信号。
% MATLAB program to add white gaussian noise to signal based on SNR % Create a sample sinusoidal signal t = 0:0.005:2; % Time vector X = sin(2*pi*5*t); % Input signal % Set SNR in dB snr = 15; % Add white gaussian noise to signal Y = awgn(X, snr); % Plot the original signal and the signal with noise subplot(2, 1, 2); plot(t, X, t, Y); legend('Original Signal', 'Noisy Signal'); title('Input Signal with Noise');
输出
使用指定的SNR和信号功率为信号添加高斯白噪声
使用“awgn”函数的以下语法为信号添加具有指定SNR和信号功率的高斯白噪声
Y = awgn(X, snr, signalpower);
示例
让我们看看如何实现语法的代码。
% MATLAB program to add white gaussian noise to signal with specified SNR and signal power % Generate a sample input signal t = 0:0.005:2; % Time vector X = sin(2*pi*5*t); % Input signal % Compute the signal power signal_power = sum(X.^2) / length(X); % Set an SNR snr = 15; % Add white gaussian noise to signal Y = awgn(X, snr, signal_power); % Plot the original signal and the signal with noise subplot(2, 1, 2); plot(t, X, t, Y); legend('Input Signal', 'Noisy Signal'); title('Input Signal with Noise');
输出
使用指定的随机数生成器对象为信号添加高斯白噪声
使用“awgn”函数的以下语法为信号添加具有指定随机数生成器对象的,用于生成正态随机噪声的高斯白噪声
Y = awgn(X, snr, signal_power, rand_object);
示例
考虑以下MATLAB程序来了解此语法的代码实现
% MATLAB program to add white gaussian noise to signal with specified random object % Generate a sample input signal t = 0:0.005:2; % Time vector X = sin(2*pi*5*t); % Input signal % Compute the signal power signal_power = sum(X.^2) / length(X); % Set an SNR in dB snr = 15; % Create a random number generator object rand_obj = RandStream('mt19937ar', 'Seed', 50); % Add white gaussian noise to signal using the random object Y = awgn(X, snr, signal_power, rand_obj); % Plot the original signal and the signal with noise subplot(2, 1, 2); plot(t, X, t, Y); legend('Input Signal', 'Noisy Signal'); title('Input Signal with Noise');
输出
使用指定的随机种子为信号添加高斯白噪声
在MATLAB中,我们可以使用“awgn”函数的以下语法,为信号添加具有指定随机种子的高斯白噪声,以实现可重复性
Y = awgn(X, snr, signal_power, seed);
示例
让我们看看如何在MATLAB程序中使用此函数。
% MATLAB program to add white gaussian noise to signal with specified random seed % Generate a sample input signal t = 0:0.005:2; % Time vector X = sin(2*pi*5*t); % Input signal % Compute the signal power signal_power = sum(X.^2) / length(X); % Set the SNR in dB snr = 15; % Set a random seed for reproducibility seed = 120; % Add white gaussian noise to signal using the random seed Y = awgn(X, snr, signal_power, seed); % Plot the original signal and the signal with noise subplot(2, 1, 2); plot(t, X, t, Y); legend('Input Signal', 'Noisy Signal'); title('Input Signal with Noise');
输出
使用指定的功率类型为信号添加高斯白噪声
使用“awgn”函数的以下语法为信号添加具有指定功率类型的高斯白噪声
Y = awgn(X, snr, signal_power, power_type);
此处,参数“power_type”的值可以是“measured”、“actual”或“db”。默认值为“measured”。
示例
让我们看一个示例来了解此语法的代码实现。
% MATLAB program to add white gaussian noise to signal with specified power type % Generate a sample input signal t = 0:0.005:2; % Time vector X = sin(2*pi*5*t); % Input signal % Compute the signal power signal_power = sum(X.^2) / length(X); % Set the SNR in dB snr = 15; % Set the power type power_type = 'measured'; % Add white gaussian noise to signal using the random seed Y = awgn(X, snr, signal_power, power_type); % Plot the original signal and the signal with noise subplot(2, 1, 2); plot(t, X, t, Y); legend('Input Signal', 'Noisy Signal'); title('Input Signal with Noise');
输出
结论
这就是关于使用MATLAB为信号添加高斯白噪声的所有内容。在MATLAB中,使用内置函数“awgn”为信号添加高斯白噪声。在本教程中,我借助示例程序解释了“awgn”函数所有可能的语法格式。