exponenta event banner

dsp. ColoredNoise

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

Описание

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

Размер и свойства типа данных генерируемого сигнала зависят от свойств PerPerFrame, NumChannel и 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 генерируют низкочастотный шум с сингулярностью (полюсом) при f = 0. Эти процессы обладают большой памятью. Значения InverseFrequencyPower менее 0 генерируют шум высоких частот с приращениями, которые отрицательно коррелируются. Эти процессы называют антистойкими. Особые случаи включают:

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

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

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

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

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

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

Пример: 1.2

Пример: -1.4

Зависимости

Это свойство применяется только в том случае, если для параметра «Цвет» задано значение '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() выводит одну выборку или один кадр цветных шумовых данных.

Выходные аргументы

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

Выходной сигнал цветного шума, возвращаемый в виде вектора или матрицы. Свойства PerperFrame, NumChannel и OutputDataType определяют размер и тип данных вывода.

Пример: [0.5377;2.1027;-1.1403;0.5885;0.6229;-0.8971;-0.7435;-0.0588;3.458;4.4537]

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

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);

Отображение оценки шума Welch PSD вместе с теоретической PSD на логарифмическом графике. Постройте график частотной оси с логарифмической шкалой base-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 вместе с обеими реализациями на логарифмическом графике. Используйте логарифмическую шкалу base-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).

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

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

Настройте системные объекты. Набор '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 отсчетов одновременно. Измерить среднеквадратичное значение сигнала для каждого кадра, сформировать кадр розового шума, равный по длине, и масштабировать среднеквадратичное значение розового шума для согласования с сигналом. Добавьте масштабированный шум к сигналу и воспроизведите выходной сигнал.

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 = (k 1 α2) ak 1k, k = 1,2,..., 63

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

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

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

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

Нанесенные красящие фильтры (кроме розового, коричневого и фиолетового цветов) подробно описаны на стр. 820-822 в [2].

Ссылки

[1] Беран, Дж., Я. Фэн, С. Гош и Р. Кулик, Процессы длительной памяти: вероятностные свойства и статистические методы. НьюЙорк: Спрингер, 2013.

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

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

.

См. также

Функции

Блоки

Представлен в R2014a