dsp.ColoredNoise

Сгенерируйте окрашенный шумовой сигнал

Описание

dsp.ColoredNoise Система object™ генерирует цветной шумовой сигнал со спектральной плотностью мощности (PSD) 1 / | f |α по его целому частотному диапазону. Обратная степень частоты, α, может быть любым значением в интервале [-2 2]. Тип цветного шума, который генерирует объект, зависит от Цвета, который вы выбираете. Когда вы устанавливаете Color к 'custom', можно задать плотность энергии шума через свойство InverseFrequencyPower.

Свойства размера и типа данных сгенерированного сигнала зависят от SamplesPerFrame, NumChannels и свойств OutputDataType.

Этот объект использует MATLAB по умолчанию® случайный поток, RandStream. Сбросьте поток по умолчанию для повторяемых симуляций.

Сгенерировать окрашенный шумовым сигналом:

  1. Создайте dsp.ColoredNoise объект и набор его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?

Создание

Описание

пример

cn = dsp.ColoredNoise создает цветной шумовой объект, cn, это выводит шум, сигнализируют об одной выборке или структурируют за один раз, с 1 / | f |α спектральная характеристика по ее целому частотному диапазону. Типичными значениями для α является α = 1 (розовый шум) и α = 2 (броуновский шум).

пример

cn = dsp.ColoredNoise(Name,Value) создает цветной шумовой объект с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.

Пример: dsp.ColoredNoise('Color','pink');

пример

cn = dsp.ColoredNoise(pow,samp,numChan,Name,Value) создает цветной шумовой объект с InverseFrequencyPower набор свойств к pow, SamplesPerFrame набор свойств к samp и NumChannels набор свойств к numChan.

Пример: dsp.ColoredNoise(1,44.1e3,1,'OutputDataType','single');

пример

cn = dsp.ColoredNoise(color,samp,numChan,Name,Value) создает цветной шумовой объект с Color набор свойств к color, SamplesPerFrame набор свойств к samp и NumChannels набор свойств к numChan.

Пример: dsp.ColoredNoise('pink',1024,2,'OutputDataType','single');

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release функция разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.

Шумовой цвет в виде одного из следующих. Каждый цвет сопоставлен с определенной обратной степенью частоты сгенерированной шумовой последовательности.

  • 'pink' – Обратная степень частоты, α равняется 1.

  • 'white'–– α = 0.

  • 'brown'α = 2. Также известный как красный или Броуновский шум.

  • 'blue'α =-1. Также известный как голубой шум.

  • 'purple'α =-2. Также известный как фиолетовый шум.

  • 'custom' – Для шума с пользовательской обратной степенью частоты α равняется значению свойства InverseFrequencyPower.

    InverseFrequencyPower, α может быть любым значением в интервале [-2,2].

Обратная степень частоты, α в виде действительного скаляра в интервале [-2 2]. Обратная экспонента задает PSD вероятностного процесса как 1 / | f |α. Значения InverseFrequencyPower, больше, чем 0, генерируют шум lowpass с сингулярностью (полюс) в f = 0. Эти процессы показывают хорошую память. Значения InverseFrequencyPower меньше чем 0 генерируют highpass шум с шагом, который негативно коррелируется. Эти процессы упоминаются как антиперсистентные. Особые случаи включают:

  • 1 – Розовый шум

  • 2 – Браун, красный, или Броуновский шум

  • 0 – Процесс белого шума с плоским PSD

  • -1 – Синий или голубой шум

  • -2 – Фиолетовый из фиолетового шума

В графике логарифмического журнала степени в зависимости от частоты процессы, сгенерированные этим объектом, показывают аппроксимированное линейное соотношение с наклоном, равным –α.

Пример: 1.2

Пример: -1.4

Зависимости

Это свойство применяется только, когда вы выбираете Цвет к 'custom'.

Количество отсчетов на выход образовывает канал в виде положительного целого числа. Это свойство определяет количество строк сигнала.

Пример: 512

Количество выхода образовывает канал в виде целого числа. Это свойство определяет количество столбцов сигнала.

Пример 5

Пример: 25

Источник потока случайных чисел в виде одного из следующего:

  • 'Global stream' – Текущий глобальный поток случайных чисел используется для нормально распределенной генерации случайных чисел.

  • 'mt19937ar with seed' – mt19937ar алгоритм используется для нормально распределенной генерации случайных чисел. reset функция повторно инициализирует поток случайных чисел к значению Seed свойство.

Начальный seed mt19937ar потокового алгоритма генератора случайных чисел в виде неотрицательного целого числа. reset функция повторно инициализирует поток случайных чисел к значению Seed свойство.

Пример 3

Пример: 34

Зависимости

Это свойство применяется только, когда вы устанавливаете RandomStream свойство к 'mt19937ar with seed'.

Типы данных: double

Задайте выход, который будет ограничен между +1 и −1 в виде:

  • true – Внутренний случайный источник, который генерирует шум, универсален. Если Color установлен в 'white', нет никакого цветового фильтра, применился к выходу случайного источника. Выход является универсальным шумом амплитуды между +1 и −1. Если Color установлен в любую другую опцию, затем окрашивающий фильтр применяется к выходу случайного источника, сопровождаемый усилением гарантирует, что абсолютный максимум выход никогда не превышает 1.

  • false – Внутренний случайный источник является Гауссовым. Выход не ограничен.

Типы данных: логический

Выходные данные вводят в виде любого 'double' или 'single'.

Использование

Синтаксис

Описание

пример

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]

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

свернуть все

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Выход из этого примера показывает, что розовый шум имеет приблизительно равную силу в полосах октавы.

Сгенерируйте одноканальный сигнал розового шума, который является 44 100 выборками в длине. Установите генератор случайных чисел на настройки по умолчанию для восстанавливаемых результатов.

pinkNoise = dsp.ColoredNoise(1,44.1e3,1);
rng default;
x = pinkNoise();

Установите частоту дискретизации на 44,1 кГц. Измерьте степень в полосах октавы, начинающих с 100-200 Гц и заканчивающихся 6.400-12.8 кГц. Отобразите результаты в таблице.

beginfreq = 100;
endfreq = 200;
count = 1;
freqinterval = zeros(7,2);
Pwr = zeros(7,1);
while(endfreq<=44.1e3/2)
    freqinterval(count,:) = [beginfreq endfreq];
    Pwr(count) = bandpower(x,44.1e3,[beginfreq endfreq]);
    beginfreq = endfreq;
    endfreq = 2*endfreq;
    count = count+1;
end
Pwr = Pwr(:);
table(freqinterval,Pwr)
ans=7×2 table
    freqinterval       Pwr  
    _____________    _______

     100      200    0.17549
     200      400    0.20313
     400      800     0.2438
     800     1600     0.2503
    1600     3200    0.25233
    3200     6400    0.26828
    6400    12800    0.25211

Розовый шум имеет примерно равную силу в полосах октавы.

Повторно выполните предыдущий код с 'InverseFrequencyPower' равняйтесь 0, который генерирует сигнал белого шума. Сигнал белого шума имеет плоскую спектральную плотность мощности или равную степень на модульную частоту. Установите генератор случайных чисел на настройки по умолчанию для восстанавливаемых результатов.

whiteNoise = dsp.ColoredNoise(0,44.1e3,1);
rng default;
x = whiteNoise();

Установите частоту дискретизации, 44,1 кГц. Измерьте степень в полосах октавы, начинающих с 100-200 Гц и заканчивающихся 6.400-12.8 кГц. Отобразите результаты в таблице.

beginfreq = 100;
endfreq = 200;
count = 1;
while(endfreq<=44.1e3/2)
    freqinterval(count,:) = [beginfreq endfreq];
    Pwr(count) = bandpower(x,44.1e3,[beginfreq endfreq]);
    beginfreq = endfreq;
    endfreq = 2*endfreq;
    count = count+1;
end
Pwr = Pwr(:);
table(freqinterval,Pwr)
ans=7×2 table
    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 или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Сгенерируйте розовый шумовой сигнал 2048 выборки в длине. Частота дискретизации составляет 1 Гц. Получите оценку спектральной плотности мощности с помощью перекрытого усреднения сегмента валлийцев.

cn = dsp.ColoredNoise('pink','SamplesPerFrame',2048);
x = cn();
Fs = 1;
[Pxx,F] = pwelch(x,hamming(128),[],[],Fs,'psd');

Создайте теоретический PSD из розового шумового процесса.

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

Отобразите валлийскую оценку PSD шума наряду с теоретическим PSD на графике логарифмического журнала. Постройте ось частоты с основой 2 логарифмических масштаба, чтобы ясно показать октавы. Постройте оценку PSD в дБ, 10log10.

plot(log2(F(2:end)),10*log10(Pxx(2:end)))
hold on
plot(log2(F(2:end)),10*log10(PSDPink),'r','linewidth',2)
xlabel('log_2(Hz)')
ylabel('dB')
title('Pink Noise')
grid on
legend('PSD estimate','Theoretical pink noise PSD')
hold off

Figure contains an axes object. The axes object with title Pink Noise contains 2 objects of type line. These objects represent PSD estimate, Theoretical pink noise PSD.

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Сгенерируйте два канала Броуновского шума установкой Color к 'brown' и NumChannels к 2.

cn = dsp.ColoredNoise('brown','SamplesPerFrame',2048,...
    'NumChannels',2);
x = cn();
subplot(2,1,1)
plot(x(:,1)); title('Channel 1'); axis tight;
subplot(2,1,2)
plot(x(:,2)); title('Channel 2'); axis tight;

Figure contains 2 axes objects. Axes object 1 with title Channel 1 contains an object of type line. Axes object 2 with title Channel 2 contains an object of type line.

Частота дискретизации составляет 1 Гц. Получите валлийские оценки PSD для обоих каналов. Четвертый аргумент pwelch, NFFT, то, которое является количеством точек БПФ, пусто. Следовательно, NFFT установлен в 256. Для даже NFFT раньше вычисляло количество точек БПФ, оценка PSD (NFFT/2+1), который равняется 129.

Fs = 1;
Pxx = zeros(129,size(x,2));
for nn = 1:size(x,2)
[Pxx(:,nn),F] = pwelch(x(:,nn),hamming(128),[],[],Fs,'psd');
end

Создайте теоретический PSD из Броуновского процесса. Постройте теоретический PSD наряду с обеими реализацией на графике логарифмического журнала. Используйте основу 2 логарифмических масштаба для оси частоты и постройте спектральные плотности мощности в дБ.

PSDBrownian = 1./F(2:end).^2;
figure;
plot(log2(F(2:end)),10*log10(PSDBrownian),'k-.','linewidth',2);
hold on;
plot(log2(F(2:end)),10*log10(Pxx(2:end,:)));
xlabel('log_2(Hz)'); ylabel('dB');
grid on;
legend('Theoretical PSD','Channel 1', 'Channel 2');

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Theoretical PSD, Channel 1, Channel 2.

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Примечание: audioDeviceWriter Система object™ не поддерживается в MATLAB Online.

В этом примере показано, как передать потоком в звуковом файле и добавить розовый шум в отношении сигнал-шум (SNR) на 0 дБ. Чтения в качестве примера в системах координат звукового файла 1 024 выборки в длине, измеряет среднеквадратичное (RMS) значение аудио системы координат и добавляет розовый шум с тем же значением RMS как аудио система координат.

Настройте Системные объекты. Установите 'SamplesPerFrame' и для средства чтения файлов и для цветного шумового генератора к 1 024 выборкам. Установите Color к 'pink' сгенерировать розовый шум с a 1/|f| спектральная плотность мощности.

N = 1024;
afr = dsp.AudioFileReader('Filename','speech_dft.mp3',...
    'SamplesPerFrame',N);
adw = audioDeviceWriter('SampleRate',afr.SampleRate);
cn = dsp.ColoredNoise('pink','SamplesPerFrame',N);

Передайте звуковой файл потоком в 1 024 выборках за один раз. Измерьте значение RMS сигнала для каждой системы координат, сгенерируйте систему координат розового шума, равного в длине, и масштабируйте значение RMS розового шума, чтобы совпадать с сигналом. Добавьте масштабированный шум в сигнал и проигрывайте выход.

while ~isDone(afr)
    audio = afr();
    speechRMS = rms(audio);
    noise = cn();
    noiseRMS = rms(noise);
    noise = noise*(speechRMS/noiseRMS);
    sigPlusNoise = audio+noise;
    adw(sigPlusNoise);   
end
release(afr);            
release(adw);

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Сгенерируйте 2D каналы розового шума и вычислите спектр мощности на основе рабочего среднего значения 50 оценок PSD.

Настройте цветной шумовой генератор, чтобы сгенерировать два канала розового шума с 1 024 выборками. Настройте спектр анализатор, чтобы вычислить измененные периодограммы с помощью Окна Хэмминга и 50%-го перекрытия. Получите рабочее среднее значение PSD использование 50 спектральных средних значений.

pinkNoise = dsp.ColoredNoise('pink',1024,2);
sa = dsp.SpectrumAnalyzer('SpectrumType','Power density', ...
    'OverlapPercent',50,'Window','Hamming', ...
    'SpectralAverages',50,'PlotAsTwoSidedSpectrum',false, ...
    'FrequencyScale','log','YLimits',[-50 30]);

Запустите симуляцию в течение 30 секунд.

tic
while toc < 30
    pink = pinkNoise();
    sa(pink);
end

Больше о

развернуть все

Алгоритмы

Рисунок показывает полный процесс генерации цветного шума.

Случайный потоковый генератор производит поток белого шума, который является или Гауссовым или универсальным в распределении. Окрашивающий фильтр применился к белому шуму, генерирует окрашенный шум с функцией спектральной плотности мощности (PSD), данной:

S(f)=L(f)|f|α

Когда α, обратная степень частоты, равняется 0, никакой фильтр окраски не применяется к выходу случайного потокового генератора. Если ограниченная опция включена, выход является универсальным белым шумом с амплитудой между +1 и −1. Если ограниченный выход не включен, выход является Гауссовым белым шумом, и значения не ограничены между +1 и −1. Если α установлен в значение, то окрашивающий фильтр применяется к выходу случайного потокового генератора. Если ограниченная выходная опция включена, усиление, g применяется к выходу окрашивающего фильтра, чтобы гарантировать, что абсолютный максимум выход никогда не превышает 1.

Для получения дополнительной информации на цветных шумовых процессах и как значение α влияет на PSD цветного шума, смотрите Цветные Шумовые Процессы.

Когда обратная энергия частоты, α положителен, цветной шум, произведена с помощью модели автоматического регрессивного (AR) порядка 63. Коэффициенты AR:

a0=1,ak=(k1α2)ak1k,k=1,2,,63

Розовые и коричневые шумы являются особыми случаями, которые сгенерированы от специально настроенных фильтров SOS порядков 12 и 10, соответственно. Эти фильтры оптимизированы для лучшей эффективности.

Когда обратная энергия частоты, α отрицателен, цветной шум, произведена с помощью модели скользящего среднего значения (MA) порядка 255. Коэффициенты MA:

b0=1,bk=(k1+α2)bk1k,k=1,2,,255

Фиолетовый шум сгенерирован от фильтра первого порядка, B = [1 −1].

Окрашивающие примененные фильтры (кроме розового, коричневого цвета, и фиолетовый) детализированы на стр 820–822 в [2].

Ссылки

[1] Beran, J., И. Фэн, С. Гош, и Р. Кулик, процессы хорошей памяти: вероятностные свойства и статистические методы. Нью-Йорк: Спрингер, 2013.

[2] Кэсдин, Нью-Джерси "Дискретная симуляция цветных шумовых и стохастических процессов и 1/fα Генерация шума закона о степени". Продолжения IEEE®, Издание 83, № 5, 1995, стр 802–827.

Расширенные возможности

Смотрите также

Функции

Блоки

Введенный в R2014a