文档

dsp。colordnoise系统对象

产生彩色噪声信号

描述

dsp。ColoredNoise系统对象™产生功率谱密度(PSD)为的彩色噪声信号1 / |f|α在整个频率范围内。逆频率功率,α,可以是区间内的任意值(2 - 2).对象产生的彩色噪声的类型取决于颜色你选择。当你设置颜色“自定义”,可以通过。来指定噪声的功率密度InverseFrequencyPower财产。

生成的信号的大小和数据类型属性取决于SamplesPerFrame,NumChannels,以及OutputDataType属性。

该对象使用默认的MATLAB®随机流,RandStream.重置可重复模拟的默认流。

产生彩色噪声信号:

  1. 创建dsp。ColoredNoiseobject and set its properties.

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?(MATLAB)。

创建

语法

Cn = dsp。颜色edNoise
cn = dsp.ColoredNoise(名称,值)
cn = dsp.ColoredNoise(pow,samp,numChan,名称,值)

描述

例子

cn= dsp。颜色edNoise创建一个彩色噪声对象,cn,它每次输出一个样本或帧的噪声信号1 / |f|α在整个频率范围内的光谱特性。的典型值αα= 1(粉色噪音)和α= 2(布朗噪声)。

例子

cn= dsp。颜色edNoise(名称,值创建一个彩色噪声对象,每个指定属性设置为指定值。将每个属性名用单引号括起来。

例子:dsp.ColoredNoise(“颜色”,“粉红色”);

例子

cn= dsp。颜色edNoise(pow,samp,numChan,名称,值方法创建彩色噪声对象InverseFrequencyPower属性设置为战俘,SamplesPerFrame属性设置为桑普,以及NumChannels属性设置为numChan

例子:dsp.ColoredNoise (1, 44.1 e3, 1,“OutputDataType”,“单”);

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放函数解锁它们。

如果属性是可调,您可以随时更改其值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统(MATLAB)。

噪声颜色,指定为以下之一。每种颜色都与产生的噪声序列的特定逆频率功率相关联。

  • “粉红色”——逆频电源,α等于1。

  • “白色”- - -α= 0。

  • “棕色”- - -α= 2。也被称为红噪声或布朗噪声。

  • “蓝”- - -α= 1。也被称为蓝色噪音。

  • “紫色”- - -α= 2。也被称为紫噪声。

  • “自定义”—对于具有自定义逆频率功率的噪声,α的值InverseFrequencyPower财产。

    InverseFrequencyPower,α可以是区间[中的任意值2、2]。

逆频率功率,α,指定为区间内的实标量(2 - 2).逆指数将随机过程的PSD定义为1 / |f|α.的值InverseFrequencyPower大于0会产生奇点(极点)的低通噪声f= 0。这些过程表现出长记忆。的值InverseFrequencyPower小于0会产生高通噪声,其增量是负相关的。这些进程称为反持久化进程。特殊情况包括:

  • 1——粉色噪音

  • 2——棕色、红色或布朗噪声

  • 0—平PSD白噪声处理

  • -1——蓝色或天蓝色的声音

  • -2——紫色中的紫色的噪音

在功率作为频率函数的对数-对数图中,由该对象产生的过程表现出近似的线性关系,其斜率等于-α

例子:1.2

例子:-1.4

依赖关系

此属性仅在设置时应用颜色“自定义”

每个输出通道的样本数,指定为正整数。这个属性决定了信号的行数。

例子:512

输出通道数,指定为整数。这个属性决定了信号的列数。

例子:5

例子:25

随机数流的源,指定为下列之一:

  • “全球流”—当前全局随机数流用于正态分布随机数生成。

  • “mt19937ar带种子”—采用mt19937ar算法生成正态分布随机数。的重置方法的值重新初始化随机数流种子财产。

mt19937ar随机数流生成器算法的初始种子,指定为非负整数。的重置方法的值重新初始化随机数流种子财产。

例子:3.

例子:34

依赖关系

此属性仅在设置RandomStream财产“mt19937ar带种子”

数据类型:

输出数据类型,指定为任意一种“双”“单一”

使用

对于R2016b之前的版本,请使用一步函数来运行System对象™算法。关于一步是您创建的对象,后面跟着本节中显示的参数。

例如,Y = step(obj,x)而且Y = obj(x)执行等效操作。

语法

噪声输出= cn()

描述

例子

noiseOut= cn ()输出一个样本或一帧彩色噪声数据。

输出参数

全部展开

彩色噪声输出,作为向量或矩阵返回。的SamplesPerFrame,NumChannels,以及OutputDataType属性指定输出的大小和数据类型。

例子:0.5377; 2.1027; -1.1403; 0.5885; 0.6229; -0.8971; -0.7435; -0.0588; 3.458; 4.4537

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置系统对象的内部状态

例子

全部展开

请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步语法。例如,obj (x)就变成了步骤(obj, x)

这个例子的输出显示粉色噪声在八度频带中具有近似相等的功率。

生成一个粉色噪声的单通道信号,长度为44,100个样本。将随机数生成器设置为默认设置,以获得可重复的结果。

pinkNoise = dsp. colordnoise (1,44.1e3,1);rng默认的;x = pinkNoise();

设置采样频率为44.1 kHz。测量从100- 200hz开始到6.400-12.8 kHz结束的八度频段的功率。在表格中显示结果。

Beginfreq = 100;Endfreq = 200;Count = 1;Freqinterval = 0 (7,2);Pwr = 0 (7,1);(endfreq<=44.1e3/2) freqinterval(count,:) = [beginfreq endfreq];Pwr(count) = bandpower(x,44.1e3,[beginfreq endfreq]);Beginfreq = endfreq;Endfreq = 2* Endfreq;Count = Count +1;结束Pwr = Pwr(:);表(freqinterval压水式反应堆)
ans =7×2表freqinterval Pwr _____________ _______ 100 200 0.19436 200 400 0.18472 400 800 0.20873 800 1600 0.2177 1600 3200 0.21887 3200 6400 0.23617 6400 12800 0.23526

粉色噪音在八度波段的功率大致相等。

重新运行前面的代码“InverseFrequencyPower”等于0,产生白噪声信号。白噪声信号具有平坦的功率谱密度,或单位频率的功率相等。将随机数生成器设置为默认设置,以获得可重复的结果。

whiteNoise = dsp.ColoredNoise(0,44.1e3,1);rng默认的;x = whiteNoise();

设置采样频率为44.1 kHz。测量从100- 200hz开始到6.400-12.8 kHz结束的八度频段的功率。在表格中显示结果。

Beginfreq = 100;Endfreq = 200;Count = 1;(endfreq<=44.1e3/2) freqinterval(count,:) = [beginfreq endfreq];Pwr(count) = bandpower(x,44.1e3,[beginfreq endfreq]);Beginfreq = endfreq;Endfreq = 2* Endfreq;Count = Count +1;结束Pwr = Pwr(:);表(freqinterval压水式反应堆)
ans =7×2表freqinterval Pwr _____________ _________ 100 200 0.0031417 200 400 0.0073833 400 800 0.017421 800 1600 0.035926 1600 3200 0.071139 3200 6400 0.15183 6400 12800 0.28611

白噪声每单位频率的功率近似相等,因此八度频带的功率分布不相等。因为一个八度频带的宽度随着频率的增加而增加,每个八度频带的功率对于白噪声是增加的。

请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步语法。例如,obj (x)就变成了步骤(obj, x)

生成长度为2048个样本的粉色噪声信号。采样频率为1hz。利用韦尔奇重叠段平均得到功率谱密度的估计值。

Cn = dsp。颜色edNoise(“颜色”,“粉红色”,“SamplesPerFrame”, 2048);X = cn();Fs = 1;[Pxx,F] = pwelch(x,hamming(128),[],[],Fs,psd的);

构造粉色噪声过程的理论PSD。

PSDPink = 1./F(2:end);

在对数-对数图上显示噪声的韦尔奇PSD估计和理论PSD。用以2为基数的对数刻度绘制频率轴,以清楚地显示八度。绘制PSD估计,单位为dB,

情节(log2 (F(2:结束),10 * log10 (Pxx(2:结束)))情节(log2 (F(2:结束),10 * log10 (PSDPink),“r”,“线宽”(2)包含“log_2 (Hz)”) ylabel (“数据库”)标题(“粉红噪声”网格)传奇(“PSD估计”,“理论粉色噪声PSD”)举行

请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步语法。例如,obj (x)就变成了步骤(obj, x)

通过设置生成两个通道的布朗噪声颜色棕色的而且NumChannels2。

Cn = dsp。颜色edNoise(“颜色”,“棕色”,“SamplesPerFrame”, 2048,...“NumChannels”2);X = cn();次要情节(2,1,1)情节(x (: 1));标题(通道1的);轴;次要情节(2,1,2)情节(x (:, 2));标题(通道2的);轴

采样频率为1hz。获取两个渠道的Welch PSD估算值。第四个论证pwelch,NFFT,即FFT点数,为空。因此,NFFT设置为256。对于偶数NFFT,用于计算PSD估计值的FFT点的数量是(NFFT/2+1),等于129。

Fs = 1;Pxx = 0 (129,size(x,2));nn = 1:尺寸(x, 2) [Pxx (:, nn), F] = pwelch (x (:, nn),汉明(128),[],[],Fs,psd的);结束

构造一个布朗过程的理论PSD。在一个对数-对数图上绘制理论PSD和两个实现。使用base-2对数刻度作为频率轴,并绘制以dB为单位的功率谱密度图。

PSDBrownian = 1 /F(2:end).^2;图;情节(log2 (F(2:结束),10 * log10 (PSDBrownian),“k -”。,“线宽”2);持有;情节(log2 (F(2:结束),10 * log10 (Pxx(2:最终,:)));包含(“log_2 (Hz)”);ylabel (“数据库”);网格;传奇(“理论PSD”,通道1的,通道2的);

请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步语法。例如,obj (x)就变成了步骤(obj, x)

这个例子展示了如何在一个音频文件中流化并添加0 dB信噪比(SNR)的粉色噪声。该示例以帧为单位读取一个音频文件的1024个样本长度,测量音频帧的均方根(RMS)值,并添加与音频帧相同的RMS值的粉色噪声。

设置System对象。集“SamplesPerFrame”对于文件读取器和彩色噪声发生器来说,都需要1024个样本。集颜色粉红色的来生成粉色噪声功率谱密度。

N = 1024;Afr = dsp。AudioFileReader (“文件名”,“speech_dft.mp3”,“SamplesPerFrame”N);adw = audioDeviceWriter(“SampleRate”, afr.SampleRate);Cn = dsp。颜色edNoise(“颜色”,“粉红色”,“SamplesPerFrame”N);rms = dsp.RMS;

一次在1024个样本中流化音频文件。测量每一帧的信号RMS值,生成一帧长度相等的粉色噪声,并缩放粉色噪声的RMS值以匹配信号。在信号中添加缩放噪声并播放输出。

~isDone(afr) audio = afr();speech hrms = rms(音频);噪声= cn();noiseRMS = rms(噪声);noise = noise*(speech hrms /noiseRMS);sigPlusNoise =音频+噪声;adw (sigPlusNoise);结束释放(误判率);释放(adw);

请注意:如果您使用的是R2016a或更早的版本,请将对对象的每次调用替换为等效的一步语法。例如,obj (x)就变成了步骤(obj, x)

生成双通道粉色噪声,并基于50个PSD估计的运行平均值计算功率谱。

设置彩色噪声发生器,生成两个通道的1024个样本的粉色噪声。设置频谱分析仪,使用汉明窗口和50%重叠计算修改的周期图。使用50个光谱平均值获得PSD的运行平均值。

pinkNoise = dsp. colordnoise (1,1024,2);Sa = dsp。年代pectrumAnalyzer(“SpectrumType”,的功率密度,...“OverlapPercent”, 50岁,“窗口”,“汉明”,...“SpectralAverages”, 50岁,“PlotAsTwoSidedSpectrum”假的,...“FrequencyScale”,“日志”,“YLimits”20 [-50]);

运行模拟30秒。

抽搐toc < 30 pink = pinkNoise();sa(粉色);结束

更多关于

全部展开

算法

全部展开

参考文献

[1]张志强,冯玉峰,李志强,长记忆过程:概率性质与统计方法。纽约:施普林格,2013年。

新泽西州卡斯丁市有色噪声和随机过程的离散模拟和1/fα幂律噪声产生。”IEEE学报®1995年第5期,第802-827页。

扩展功能

另请参阅

功能

在R2014a中介绍

这个话题有帮助吗?