dsp. ColoredNoise

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

Описание

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

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

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

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

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

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

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

Создание

Синтаксис

cn = dsp.ColoredNoise
cn = dsp.ColoredNoise(Name,Value)
cn = dsp.ColoredNoise(pow,samp,numChan,Name,Value)

Описание

пример

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

пример

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

Пример: dsp. ColoredNoise ('Цвет', 'розовый');

пример

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

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

Свойства

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

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

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

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

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

  • розовый Обратная степень частоты, α равняется 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

Тип выходных данных, заданный или как 'double' или как 'single'.

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

noiseOut = 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]

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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.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 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('Color','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 в дБ, 10журнал10.

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

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

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

cn = dsp.ColoredNoise('Color','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;

Частота дискретизации составляет 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');

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

Примечание: dsp.AudioFileReader и Системные объекты audioDeviceWriter не поддержаны в 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('Color','pink','SamplesPerFrame',N);
rms = dsp.RMS;

Передайте звуковой файл потоком в 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.

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

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

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

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

Больше о

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

Алгоритмы

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

Ссылки

[1] Beran, J., И.Фэн, S.Ghosh, и R.Kulik, процессы хорошей памяти: вероятностные свойства и статистические методы. NewYork:Springer, 2013.

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

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

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

Функции

Блоки

Введенный в R2014a

Для просмотра документации необходимо авторизоваться на сайте