dsp.ColoredNoise

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

Описание

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

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

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

Чтобы сгенерировать цветной сигнал шума:

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

cn = dsp.ColoredNoise создает цветной объект шума, cn, который выводит сигнал шума по одной выборке или системе координат за раз со 1/|<reservedrangesplaceholder0>|α спектральная характеристика во всей ее частотной области значений. Типичные значения для α: α = 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/|<reservedrangesplaceholder0>|α. Значения InverseFrequencyPower, больше 0, генерируют lowpass с особенностью (полюс) при f = 0. Эти процессы показывают большую память. Значения InverseFrequencyPower менее 0 генерируют шум высокого уровня с шагами, который отрицательно коррелирует. Эти процессы называются антистойкими. Особые случаи включают:

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

  • 2 -- Коричневый, красный или брауновский шум

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

  • -1 -- Синий или лазоревый шум

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

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

Пример: 1.2

Пример: -1.4

Зависимости

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

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

Пример: 512

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

Пример: 5

Пример: 25

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

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

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

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

Пример: 3

Пример: 34

Зависимости

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

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

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

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

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

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

Выход данных, заданный как '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 Welch для шума вместе с теоретическим 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. The axes 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. Axes 1 with title Channel 1 contains an object of type line. Axes 2 with title Channel 2 contains an object of type line.

Частота дискретизации составляет 1 Гц. Получите оценки PSD Welch для обоих каналов. Четвертый аргумент 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. The axes contains 3 objects of type line. These objects represent Theoretical PSD, Channel 1, Channel 2.

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

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

Этот пример показов, как передать аудио файла и добавить розовый шум при отношении сигнал/шум (ОСШ) 0 дБ. Пример читает в системы координат из аудио файла 1024 выборок в длину, измеряет среднее значение корня (RMS) аудио системы координат и добавляет розовый шум с тем же значением RMS, что и аудио системы координат.

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

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

Потоковая передача аудио файла в 1024 выборки за раз. Измерьте значение 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).

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

Установите генератор цветного шума, чтобы сгенерировать два канала розового шума с 1024 выборками. Настройте спектральный анализатор, чтобы вычислить модифицированные периодограммы с помощью окна Хэмминга и 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., Y. Feng, S. Ghosh, and R. Kulik, Long-Memory Processes: вероятностные свойства и статистические методы. Нью-Йорк: Спрингер, 2013.

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

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

.

См. также

Функции

Блоки

Введенный в R2014a