Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Digital-Signal-Processing_03_Random Signals_White Noise
English
notebook
Signal Processing
EnglishnotebookSignal Processing
喇叭花
发布于 2023-08-02
推荐镜像 :digital-signal-processing:Digital-Signal-Processing-Lecture
推荐机型 :c2_m4_cpu
Random Signals
White Noise
Definition
Example - Amplifier Noise
Example - Generation of White Noise with Different Amplitude Distributions

Random Signals

🏃🏻 Getting Started Guide
This document can be executed directly on the Bohrium Notebook. To begin, click the Connect button located at the top of the interface, then select the digital-signal-processing:Digital-Signal-Processing-Lecture Image and choose your desired machine configuration to proceed.

📖 Source
This Notebook is from a famous Signal Processing Lecture. The notebooks constitute the lecture notes to the masters course Digital Signal Processing read by Sascha Spors, Institute of Communications Engineering, Universität Rostock.

This jupyter notebook is part of a collection of notebooks on various topics of Digital Signal Processing. Please direct questions and suggestions to Sascha.Spors@uni-rostock.de.

代码
文本

White Noise

代码
文本

Definition

White noise is a wide-sense stationary (WSS) random signal with constant power spectral density (PSD)

where denotes the power per frequency. White noise draws its name from the analogy to white light. It refers typically to an idealized model of a random signal, e.g. emerging from measurement noise. The auto-correlation function (ACF) of white noise can be derived by inverse discrete-time Fourier transformation (DTFT) of the PSD

This result implies that white noise has to be a zero-mean random process. It can be concluded from the ACF that two neighboring samples and are uncorrelated. Hence they show no dependencies in the statistical sense. Although this is often assumed, the probability density function (PDF) of white noise is not necessarily given by the normal distribution. In general, it is required to additionally state the amplitude distribution when denoting a signal as white noise.

代码
文本

Example - Amplifier Noise

Additive white Gaussian noise (AWGN) is often used as a model for amplifier noise. In order to evaluate if this holds for a typical audio amplifier, the noise captured from a microphone preamplifier at full amplification with open connectors is analyzed statistically. For the remainder, a function is defined to estimate and plot the PDF and ACF of a given random signal.

代码
文本
[1]
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats


def estimate_plot_pdf_acf(x, nbins=50, acf_range=30):
'''Estimate and plot PDF/CDF of a given sample function.'''

# compute and truncate ACF
acf = 1/len(x) * np.correlate(x, x, mode='full')
acf = acf[len(x)-acf_range-1:len(x)+acf_range-1]
kappa = np.arange(-acf_range, acf_range)

# plot PDF
plt.figure(figsize=(10, 6))
plt.subplot(121)
plt.hist(x, nbins, density=True)
plt.title('Estimated PDF')
plt.xlabel(r'$\theta$')
plt.ylabel(r'$\hat{p}_n(\theta)$')
plt.grid()

# plot ACF
plt.subplot(122)
plt.stem(kappa, acf, use_line_collection=True)
plt.title('Estimated ACF')
plt.ylabel(r'$\hat{\varphi}_{nn}[\kappa]$')
plt.xlabel(r'$\kappa$')
plt.axis([-acf_range, acf_range, 1.1*min(acf), 1.1*max(acf)])
plt.grid()
代码
文本

Now the pre-captured noise is loaded and analyzed

代码
文本
[2]
noise = np.load('/digital-signal-processing-lecture/data/amplifier_noise.npz')['noise']
estimate_plot_pdf_acf(noise, nbins=100, acf_range=150)
/tmp/ipykernel_785/2513969861.py:25: MatplotlibDeprecationWarning: The 'use_line_collection' parameter of stem() was deprecated in Matplotlib 3.6 and will be removed two minor releases later. If any parameter follows 'use_line_collection', they should be passed as keyword, not positionally.
  plt.stem(kappa, acf, use_line_collection=True)
代码
文本

Inspecting the PDF reveals that it fits quite well to a normal distribution. The ACF consists of a pronounced peak. from which can be concluded that the samples are approximately uncorrelated. Hence, the amplifier noise can be modeled reasonably well as additive white Gaussian noise. The parameters of the normal distribution (mean , variance ) are estimated as

代码
文本
[3]
mean = np.mean(noise)
variance = np.var(noise)

print('Mean:\t\t {0:1.3e} \nVariance:\t {1:1.3e}'.format(mean, variance))
Mean:		 -1.537e-05 
Variance:	 1.140e-07
代码
文本

Excercise

  • What relative level does the amplifier noise have when the maximum amplitude of the amplifier is assumed to be ?

Solution: The average power of a mean-free random signal is given by its variance, here . Due to the very low mean in comparison to the maximum amplitude, the noise can be assumed to be mean-free. Hence, the relative level of the noise is then given as . Numerical evaluation yields

代码
文本
[4]
print('Level of amplifier noise: {:2.2f} dB'.format(10*np.log10(variance/1)))
Level of amplifier noise: -69.43 dB
代码
文本

Example - Generation of White Noise with Different Amplitude Distributions

Toolboxes for numerical mathematics like Numpy or scipy.stats provide functions to draw uncorrelated random samples with a given amplitude distribution.

代码
文本

Uniformly distributed white noise

For samples drawn from a zero-mean random process with uniform amplitude distribution, the PDF and ACF are estimated as

代码
文本
[5]
np.random.seed(3)
estimate_plot_pdf_acf(np.random.uniform(size=10000)-1/2)
/tmp/ipykernel_785/2513969861.py:25: MatplotlibDeprecationWarning: The 'use_line_collection' parameter of stem() was deprecated in Matplotlib 3.6 and will be removed two minor releases later. If any parameter follows 'use_line_collection', they should be passed as keyword, not positionally.
  plt.stem(kappa, acf, use_line_collection=True)
代码
文本

Lets listen to uniformly distributed white noise

代码
文本
[6]
from scipy.io import wavfile
fs = 44100

x = np.random.uniform(size=5*fs)-1/2
wavfile.write('uniform_white_noise.wav', fs, np.int16(x*32768))
代码
文本

/uniform_white_noise.wav

代码
文本

Laplace distributed white noise

For samples drawn from a zero-mean random process with with Laplace amplitude distribution, the PDF and ACF are estimated as

代码
文本
[7]
estimate_plot_pdf_acf(np.random.laplace(size=10000, loc=0, scale=1/np.sqrt(2)))
/tmp/ipykernel_785/2513969861.py:25: MatplotlibDeprecationWarning: The 'use_line_collection' parameter of stem() was deprecated in Matplotlib 3.6 and will be removed two minor releases later. If any parameter follows 'use_line_collection', they should be passed as keyword, not positionally.
  plt.stem(kappa, acf, use_line_collection=True)
代码
文本

Exercise

  • Do both random processes represent white noise?
  • Estimate the power spectral density of both examples.
  • How does the ACF change if you lower the length size of the random signal. Why?

Solution: Both processes represent white noise since the ACF can be approximated reasonably well as Dirac impulse . The weight of the Dirac impulse is equal to . In case of the uniformly distributed white noise , in case of the Laplace distributed white noise . Decreasing the length size of the signal increases the statistical uncertainties in the estimate of the ACF.

代码
文本

Copyright

This notebook is provided as Open Educational Resource. Feel free to use the notebook for your own purposes. The text is licensed under Creative Commons Attribution 4.0, the code of the IPython examples under the MIT license. Please attribute the work as follows: Sascha Spors, Digital Signal Processing - Lecture notes featuring computational examples.

代码
文本
English
notebook
Signal Processing
EnglishnotebookSignal Processing
点个赞吧
推荐阅读
公开
Digital-Signal-Processing_03_Random Signals_Auto-Correlation Function
EnglishnotebookSignal Processing
EnglishnotebookSignal Processing
喇叭花
发布于 2023-08-02
公开
Digital-Signal-Processing_03_Random Signals_Independent Processes
EnglishnotebookSignal Processing
EnglishnotebookSignal Processing
喇叭花
发布于 2023-08-02