exponenta event banner

cmddenoise

Денойзинг, зависящий от интервала

Описание

пример

sigden = cmddenoise(sig,wname,level) возвращает денонсированный сигнал, sigden, полученный из зависящей от интервала деноизирования сигнала, sig, используя ортогональные или биортогональные вейвлет-фильтры и фильтры масштабирования, wname. cmddenoise пороговые значения коэффициентов вейвлета (детализации) до уровня, levelи восстанавливает аппроксимацию сигнала, используя модифицированные коэффициенты детализации. cmddenoise разбивает сигнал на интервалы на основе точек изменения дисперсии в коэффициентах детализации первого уровня и устанавливает пороги для каждого интервала отдельно. Местоположение и количество точек изменения дисперсии автоматически выбираются с помощью пенализированной контрастной функции [2]. Минимальная задержка между точками изменения составляет 10 выборок. Пороговые значения получают с использованием правила минимального порогового значения, а для изменения вейвлет-коэффициентов [1] используют мягкое пороговое значение.

пример

sigden = cmddenoise(sig,wname,level,sorh) возвращает денонсированный сигнал, sigden, используя метод пороговой обработки, sorh, для изменения вейвлет-коэффициентов. Допустимые варианты для sorh являются 's' для мягкого порогового значения или 'h' для жесткого порогового значения.

пример

sigden = cmddenoise(sig,wname,level,sorh,nb_inter) возвращает денонсированный сигнал, sigden, с числом деноизирующих интервалов в виде положительного целого числа между 1 и 6: 1≤ nb_inter ≤6. Для nb_inter ≥ 2, cmddenoise оценивает местоположение точек изменения с помощью контрастной функции [2].

пример

sigden = cmddenoise(sig,wname,level,sorh,nb_inter,thrParamsIn) возвращает денонсированный сигнал, sigden, с деноизлучающими интервалами и соответствующими порогами, заданными в виде массива ячеек матриц длиной, равной level. Каждый элемент массива ячеек содержит информацию интервала и порога для соответствующего уровня вейвлет-преобразования. Элементы thrParamsIn представляют собой N-by-3 матрицы с N, равным числу интервалов. 1-й и 2-й столбцы содержат начальный и конечный индексы интервалов, а 3-й столбец - соответствующее пороговое значение. При указании thrParamsIn, cmddenoise игнорирует значение nb_inter.

пример

[sigden,coefs] = cmddenoise(___) возвращает коэффициенты аппроксимации (масштабирования) и детализации (вейвлет), coefs. Организация coefs идентичен структуре, возвращенной wavedec. Этот синтаксис может включать любой из входных аргументов, используемых в предыдущих синтаксисах.

пример

[sigden,coefs,thrParamsOut] = cmddenoise(___) возвращает массив ячеек, thrParamsOut, с длиной, равной level. Каждый элемент thrParamsOut является матрицей N-by-3. Размерность строки элементов матрицы представляет собой количество интервалов и определяется значением входных аргументов. Каждая строка матрицы содержит начальную и конечную точки (индексы) порогового интервала и соответствующее пороговое значение.

пример

[sigden,coefs,thrParamsOut,int_DepThr_Cell] = cmddenoise(sig,wname,level,sorh,nb_inter) возвращает массив ячеек, int_DepThr_Cell, с длиной, равной 6. int_DepThr_Cell содержит информацию о интервале и пороге в предположении, что число точек изменения находится в диапазоне от 0 до 5. N-й элемент int_DepThr_Cell - матрица N-by-3, содержащая информацию об интервале, предполагающую N-1 точки изменения. Каждая строка матрицы содержит начальную и конечную точки (индексы) порогового интервала и соответствующее пороговое значение. Попытка вывода int_DepThr_Cell при использовании входного аргумента thrParamsIn, приводит к ошибке.

пример

[sigden,coefs,thrParamsOut,int_DepThr_Cell,BestNbofInt] = cmddenoise(sig,wname,level,sorh,nb_inter) возвращает оптимальное количество интервалов сигнала на основе оцененных точек изменения дисперсии в коэффициентах детализации уровня 1. Чтобы оценить количество точек изменения, cmddenoise предполагает, что общее число меньше или равно 6, и использует пенализированный контраст [2]. Попытка вывода BestNbofInt при использовании входного аргумента thrParamsIn, приводит к ошибке.

Примеры

свернуть все

Загрузить сигнал шумных блоков, nblocr1.mat. Сигнал состоит из кусочно-постоянного сигнала в аддитивном белом гауссовом шуме. Дисперсия аддитивного шума различается в трех непересекающихся интервалах.

load nblocr1;

Примените зависящее от интервала деноизирование до уровня 4 с помощью вейвлета Хаара. | cmddenoise автоматически определяет оптимальное количество и расположение точек изменения дисперсии. Постройте график деноизированного и исходного сигнала для сравнения.

sigden = cmddenoise(nblocr1,'db1',4);
plot(nblocr1);
hold on;
plot(sigden,'r','linewidth',2);
axis tight;

Figure contains an axes. The axes contains 2 objects of type line.

Загрузить сигнал шумных блоков, nblocr1.mat. Сигнал состоит из кусочно-постоянного сигнала в аддитивном белом гауссовом шуме. Дисперсия аддитивного шума различается в трех непересекающихся интервалах.

load nblocr1;

Примените зависящее от интервала понижение уровня до уровня 4, используя вейвлет Хаара и правило жесткого пороговой обработки. cmddenoise автоматически определяет оптимальное количество и расположение интервалов. Постройте график исходных и деноизированных сигналов.

sorh = 'h';
sigden = cmddenoise(nblocr1,'db1',4,sorh);
plot(nblocr1);
hold on;
plot(sigden,'r','linewidth',2);
axis tight;
legend('Original Signal','Denoised Signal','Location','NorthWest');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original Signal, Denoised Signal.

Создайте сигнал, дискретизированный на частоте 1 кГц. Сигнал состоит из ряда шишек различной ширины.

t = [0.1 0.13 0.15 0.23 0.25 0.40 0.44 0.65 0.76 0.78 0.81];
h = [4  -5 3 -4 5  -4.2   2.1   4.3  -3.1   5.1  -4.2];
h  = abs(h);
len = 1000;
w  = 0.01*[0.5 0.5 0.6 1 1 3 1 1 0.5 0.8 0.5];
tt = linspace(0,1,len);
x = zeros(1,len);
for j=1:11
  x = x + ( h(j) ./ (1+ ((tt-t(j))/w(j)).^4));
end

Добавьте белый гауссов шум с различными дисперсиями к двум непересекающимся сегментам сигнала. Добавьте нулевое среднее значение белого гауссова шума с дисперсией, равной 2, к сегменту сигнала от 0 до 0,3 секунды. Добавление нулевого среднего белого гауссова шума с единичной дисперсией к сегменту сигнала от 0,3 секунды до 1 секунды. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.

rng default;
nv1 = sqrt(2).*randn(size(tt)).*(tt<=0.3);
nv2 = randn(size(tt)).*(tt>0.3);
xx = x+nv1+nv2;
sigden = cmddenoise(xx,'sym5',5,'s',2);

Применение зависящего от интервала деноизирования с использованием наименее асимметричного вейвлета Daubechies с 5 моментами схода до уровня 3. Установите число интервалов равным 2. Постройте график шумного сигнала, исходного сигнала и деноизированного сигнала для сравнения.

sigden = cmddenoise(xx,'sym5',3,'s',2);
subplot(211)
plot(tt,xx); title('Noisy Signal');
subplot(212)
plot(tt,x,'k-.','linewidth',2);
hold on;
plot(tt,sigden,'r','linewidth',2);
legend('Original Signal','Denoised Signal','Location','SouthEast');

Figure contains 2 axes. Axes 1 with title Noisy Signal contains an object of type line. Axes 2 contains 2 objects of type line. These objects represent Original Signal, Denoised Signal.

Загрузить пример сигнала nbumpr1.mat. Дисперсия аддитивного шума различается в трех непересекающихся интервалах.

load nbumpr1.mat;

Используйте анализ множественных решений уровня 5. Создайте массив ячеек длиной 5, состоящий из матриц 3 на 3. Первые два элемента каждой строки содержат начальный и конечный индексы интервала, а последний элемент каждой строки является соответствующим порогом.

wname = 'sym4';
level = 5;
sorh = 's';
thrParamsIn =  {...
    [...
    1     207      1.0482; ...
    207   613      2.5110; ...
    613   1024     1.0031; ...
    ]; ...
    [...
    1    207      1.04824; ...
    207  613      3.8718; ...
    613  1024     1.04824; ...
    ]; ...
    [...
    1    207      1.04824; ...
    207  613      1.99710; ...
    613  1024     1.65613; ...
    ]; ...
    [...
    1    207      1.04824; ...
    207  613      2.09117; ...
    613  1024     1.04824; ...
    ]; ...
    [...
    1    207      1.04824; ...
    207  613      1.78620; ...
    613  102      1.04824; ...
    ]; ...
    };

Отрицайте сигнал, используя пороговые настройки и наименее асимметричный вейвлет Daubechies с 4 моментами исчезновения. Используйте мягкое правило пороговой обработки. Постройте график шумных и денозированных сигналов для сравнения.

wname = 'sym4';
level = 5;
sorh = 's';   sigden = cmddenoise(nbumpr1,wname,level,sorh,...
   NaN,thrParamsIn);
plot(nbumpr1); hold on;
plot(sigden,'r','linewidth',2); axis tight;
legend('Noisy Signal','Denoised Signal','Location','NorthEast');

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Noisy Signal, Denoised Signal.

Загрузить пример сигнала nblocr1.mat. Используйте вейвлет Хаара и разложите сигнал до уровня 2. Получить дискретное вейвлет-преобразование и денузировать сигнал. Возвращают вейвлет-коэффициенты шумных и деноизолированных сигналов.

load nblocr1.mat;
[sigden,coefs] = cmddenoise(nblocr1,'db1',2);
[C,L] = wavedec(nblocr1,2,'db1');

Построение графиков на основе аппроксимации уровня 2 и коэффициентов детализации уровня 2 и уровня 1 для шумного сигнала.

app = wrcoef('a',C,L,'db1',2);
subplot(3,1,1);
plot(app); title('Approximation Coefficients');
for nn = 1:2
    det = wrcoef('d',C,L,'db1',nn);
    subplot(3,1,nn+1)
    plot(det); title(['Noisy Wavelet Coefficients - Level '...
          num2str(nn)]);
end

Figure contains 3 axes. Axes 1 with title Approximation Coefficients contains an object of type line. Axes 2 with title Noisy Wavelet Coefficients - Level 1 contains an object of type line. Axes 3 with title Noisy Wavelet Coefficients - Level 2 contains an object of type line.

Построение графика на основе коэффициентов приближения и детализации для деноизируемого сигнала на тех же уровнях.

figure;
app = wrcoef('a',coefs,L,'db1',2);
subplot(3,1,1);
plot(app); title('Approximation Coefficients');
for nn = 1:2
    det = wrcoef('d',coefs,L,'db1',nn);
    subplot(3,1,nn+1)
    plot(det); 
    title(['Thresholded Wavelet Coefficients-Level '...
         num2str(nn)]);
end

Figure contains 3 axes. Axes 1 with title Approximation Coefficients contains an object of type line. Axes 2 with title Thresholded Wavelet Coefficients-Level 1 contains an object of type line. Axes 3 with title Thresholded Wavelet Coefficients-Level 2 contains an object of type line.

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

Создайте сигнал, дискретизированный на частоте 1 кГц. Сигнал состоит из ряда шишек различной ширины.

t = [0.1 0.13 0.15 0.23 0.25 0.40 0.44 0.65 0.76 0.78 0.81];
h = [4  -5  3  -4 5  -4.2  2.1  4.3  -3.1  5.1  -4.2];
h  = abs(h);
len = 1000;
w  = 0.01*[0.5 0.5 0.6 1 1 3 1 1 0.5 0.8 0.5];
tt = linspace(0,1,len);  x = zeros(1,len);
for j=1:11
  x = x + ( h(j) ./ (1+ ((tt-t(j))/w(j)).^4));
end
plot(tt,x);
title('Original Signal');
hold on;

Figure contains an axes. The axes with title Original Signal contains an object of type line.

Добавьте белый гауссов шум с различными дисперсиями к двум непересекающимся сегментам сигнала. Добавьте нулевое среднее значение белого гауссова шума с дисперсией, равной 2, к сегменту сигнала от 0 до 0,3 секунды. Добавление нулевого среднего белого гауссова шума с единичной дисперсией к сегменту сигнала от 0,3 секунды до 1 секунды. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.

rng default;
nv1 = sqrt(2).*randn(size(tt)).*(tt<=0.3);
nv2 = randn(size(tt)).*(tt>0.3);
xx = x+nv1+nv2;
plot(tt,xx);
title('Noisy Signal');

Figure contains an axes. The axes with title Noisy Signal contains 2 objects of type line.

Применение интервальзависимого деноизирования с использованием least- асимметричного вейвлета Daubechies с 4 моментами исчезновения до уровня 5. Автоматически выберите количество интервалов и выведите результат.

[sigden,coefs,thrParamsOut] = cmddenoise(xx,'sym4',5);
thrParamsOut{1}
ans = 2×3
103 ×

    0.0010    0.2930    0.0036
    0.2930    1.0000    0.0028

cmdnoise определяет одну точку изменения дисперсии в коэффициентах детализации 1-го уровня, определяющих два интервала. Первый интервал содержит выборки, 1 для 293. Второй интервал содержит выборки, 293 1000. Это близко к точке изменения истинной дисперсии, которая происходит в выборке 299.

Загрузите пример сигнала, nbumpr1.mat. Разбейте сигнал на 1-6 интервалов, предполагая от 0 до 5 точек изменения. Вычислите пороговые значения для каждого интервала. Использование наименее асимметричного вейвлета Daubechies с 4 моментами исчезновения возвращает интервалы и соответствующие пороги. Просмотрите результаты.

load nbumpr1.mat;
[sigden,~,~,int_DepThr_Cell] = cmddenoise(nbumpr1,'sym4',1);
format bank;
disp('          Begin        End          Threshold ');
          Begin        End          Threshold 
cellfun(@disp,int_DepThr_Cell,'UniformOutput',false);
          1.00       1024.00          1.36

          1.00        613.00          1.73
        613.00       1024.00          1.00

          1.00        207.00          1.05
        207.00        613.00          2.51
        613.00       1024.00          1.00

          1.00        207.00          1.05
        207.00        597.00          2.52
        597.00        627.00          1.69
        627.00       1024.00          0.97

          1.00        207.00          1.05
        207.00        613.00          2.51
        613.00        695.00          1.20
        695.00        725.00          0.59
        725.00       1024.00          1.05

          1.00        207.00          1.05
        207.00        597.00          2.52
        597.00        627.00          1.69
        627.00        695.00          1.19
        695.00        725.00          0.59
        725.00       1024.00          1.05

Загрузите пример сигнала, nbumpr1.mat. Сигнал имеет две точки изменения дисперсии, что приводит к трем интервалам. Использовать cmddenoise для определения количества точек изменения.

load nbumpr1.mat;
[sigden,~,thrParamsOut,~,bestNbofInt] = ...
       cmddenoise(nbumpr1,'sym4',1);
fprintf('Found %d change points.\n',bestNbofInt-1);
Found 2 change points.

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

свернуть все

Входной сигнал, заданный как 1-D вектор строки или столбца. sig - действительный входной сигнал для деноизирования, зависящего от интервала. Элементы sig предполагается, что они расположены на одинаковом расстоянии во времени или пространстве. Если sig содержит данные с неравной выборкой, cmddenoise не подходит. Используйте подъемное преобразование. Посмотрите lwt для получения подробной информации.

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

Имя вейвлета, указанное как вектор символа или скаляр строки. wname - любой допустимый ортогональный или биортогональный вейвлет. Можно использовать команду: wtype = wavemngr('fields',wname,'type','file'); чтобы определить, является ли имя вейвлета допустимым для использования с cmddenoise. Допустимые имена вейвлетов возвращают 1 или 2 для wtype.

Пример: 'bior2.2', 'db4', 'sym4'

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

Уровень вейвлет-преобразования (анализ множественных решений), заданный как положительное целое число. level дает уровень разложения входного сигнала с множественными разрешениями с использованием прореженного 1-D дискретного вейвлет-преобразования, wavedec.

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

Правило пороговой обработки, указанное как символьный массив. sorh - пороговое правило, используемое при изменении коэффициентов детализации. Допустимые варианты для sorh являются 's' (по умолчанию) и 'h' для мягкого и жесткого порогов.

Число интервалов, указанное как положительное целое число меньше 7. cmddenoise делит входной сигнал на nb_inter интервалы. cmddenoise определяет местоположение nb_inter изменение точек с помощью контрастной функции [2]. При вводе NaN для nb_inter, cmddenoise игнорирует входные данные. Если используется входной аргумент thrParamsIn, cmddenoise игнорирует любое значение, введенное для nb_inter.

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

Интервалы и пороги по уровню, заданному как массив ячеек матриц, равный по длине level. Каждый элемент thrParamsIn содержит информацию об интервале и пороге для соответствующего уровня анализа множественных решений. Элементы thrParamsIn представляют собой N-by-3 матрицы с N, равным числу интервалов. 1-й и 2-й столбцы содержат начальный и конечный индексы интервалов, а 3-й столбец - соответствующее пороговое значение. При указании thrParamsIn, нельзя указать выходные аргументы int_DepThr_Cell или BestNbofInt.

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

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

свернуть все

sigden - деноизированная версия входного сигнала sig. sigden - вектор 1-D строки, равный по длине sig.

coefs - вектор строки коэффициентов аппроксимации (масштабирования) и пороговой детализации (вейвлета). Порядок коэффициентов приближения и детализации по уровню в coefs совпадает с выходом wavedec. cmddenoise не применяет пороговое значение к коэффициентам аппроксимации.

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

thrParamsOut - массив ячеек матриц, равный по длине level. Каждый элемент массива ячеек содержит информацию об интервале и пороге для соответствующего уровня анализа множественных решений. Элементы thrParamsOut представляют собой N-by-3 матрицы с N, равным числу интервалов. N определяется значением входных аргументов. 1-й и 2-й столбцы содержат начальный и конечный индексы интервалов, а 3-й столбец - соответствующее пороговое значение.

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

int_DepThr_Cell содержит информацию о интервале и пороге в предположении, что число точек изменения находится в диапазоне от 0 до 5. N-й элемент int_DepThr_Cell - матрица N-by-3, содержащая информацию об интервале, предполагающую N-1 точки изменения. Каждая строка матрицы содержит начальный и конечный индексы порогового интервала и соответствующее пороговое значение. Попытка вывода int_DepThr_Cell при вводе количества интервалов и пороговых значений, thrParamsIn, приводит к ошибке. int_DepThr_Cell{BestNbofInt} или int_DepThr_Cell{nb_inter} равно элементам матрицы thrParamsOut.

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

BestNbofInt - оптимальное количество интервалов на основе расчетных точек изменения в дисперсии коэффициентов детализации уровня 1. Количество и расположение точек изменения оцениваются с использованием пенализированного контрастного метода [2]. Попытка вывода BestNbofInt при вводе количества интервалов и пороговых значений, thrParamsIn, приводит к ошибке.

Ссылки

[1] Донохо, Д. и Джонстоун, I. «Идеальная пространственная адаптация методом вейвлет-усадки», Biometrika, 1994, 81,3, 425-455.

[2] Лавилле, М. «Обнаружение множественных изменений в последовательности зависимых переменных», Стохастические процессы и их применения, 1999, 83, 79-102.

См. также

Функции

Приложения

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