Цель этого примера состоит в том, чтобы показать функции многомерного шумоподавления, обеспеченного в Wavelet Toolbox™.
Многомерные проблемы шумоподавления вейвлета имеют дело с моделями формы
где наблюдение X является p-dimensional, F является детерминированным сигналом, который будет восстановлен, и e является пространственно коррелируемым шумовым сигналом. Этот пример использует много шумовых сигналов и выполняет следующие шаги к denoise детерминированный сигнал.
Чтобы загрузить многомерный сигнал, введите следующий код в подсказке MATLAB®:
load ex4mwden
whos
Name Size Bytes Class Attributes covar 4x4 128 double x 1024x4 32768 double x_orig 1024x4 32768 double
Обычно, только матрица данных x
доступно. Здесь, у нас также есть истинная шумовая ковариационная матрица covar
и исходные сигналы x_orig
. Эти сигналы являются шумными версиями простых комбинаций двух исходных сигналов. Первый сигнал является "Блоками", который неправилен, и второй является "HeavySine", который является регулярным, приблизительно кроме времени 750. Другие два сигнала являются суммой и различием двух исходных сигналов, соответственно. Многомерный Гауссов белый шум, показывающий сильную пространственную корреляцию, добавляется к получившимся четырем сигналам, который производит наблюдаемые данные, хранимые в x
.
Чтобы отобразить исходные и наблюдаемые сигналы, введите:
kp = 0; for i = 1:4 subplot(4,2,kp+1), plot(x_orig(:,i)); axis tight; title(['Original signal ',num2str(i)]) subplot(4,2,kp+2), plot(x(:,i)); axis tight; title(['Observed signal ',num2str(i)]) kp = kp + 2; end
Истинной шумовой ковариационной матрицей дают:
covar
covar = 4×4
1.0000 0.8000 0.6000 0.7000
0.8000 1.0000 0.5000 0.6000
0.6000 0.5000 1.0000 0.7000
0.7000 0.6000 0.7000 1.0000
Стратегия шумоподавления комбинирует одномерное шумоподавление вейвлета в базисе, где предполагаемая шумовая ковариационная матрица является диагональной с Анализом главных компонентов (PCA) нев центре приближений в области вейвлета или с итоговым PCA.
Во-первых, выполните одномерное шумоподавление путем ввода следующих линий, чтобы установить параметры шумоподавления:
level = 5; wname = 'sym4'; tptr = 'sqtwolog'; sorh = 's';
Затем установите параметры PCA путем сохранения всех основных компонентов:
npc_app = 4; npc_fin = 4;
Наконец, выполните многомерное шумоподавление путем ввода:
x_den = wmulden(x, level, wname, npc_app, npc_fin, tptr, sorh);
Чтобы отобразить оригинал и сигналы denoised вводят следующее:
clf kp = 0; for i = 1:4 subplot(4,3,kp+1), plot(x_orig(:,i)); axis tight; title(['Original signal ',num2str(i)]) subplot(4,3,kp+2), plot(x(:,i)); axis tight; title(['Observed signal ',num2str(i)]) subplot(4,3,kp+3), plot(x_den(:,i)); axis tight; title(['Denoised signal ',num2str(i)]) kp = kp + 3; end
Мы видим, что, в целом, результаты являются удовлетворительными. При фокусировке на двух первых сигналах обратите внимание, что они правильно восстанавливаются, но мы можем улучшить результат путем использования в своих интересах отношений между сигналами, продвижения к дополнительному эффекту шумоподавления.
Чтобы автоматически выбрать количества сохраненных основных компонентов, использующих правило Кайзера, которое сохраняет компоненты, сопоставленные с собственными значениями, превышающими среднее значение всех собственных значений, введите:
npc_app = 'kais'; npc_fin = 'kais';
Выполните многомерное шумоподавление снова путем ввода:
[x_den, npc, nestco] = wmulden(x, level, wname, npc_app, ...
npc_fin, tptr, sorh);
Второй выходной аргумент npc
количество сохраненных основных компонентов для PCA для приближений и для итогового PCA.
npc
npc = 1×2
2 2
Как ожидалось, потому что сигналы являются комбинациями двух исходных сигналов, правило Кайзера автоматически обнаруживает, что только два основных компонента представляют интерес.
Третий выходной аргумент nestco
содержит предполагаемую шумовую ковариационную матрицу:
nestco
nestco = 4×4
1.0784 0.8333 0.6878 0.8141
0.8333 1.0025 0.5275 0.6814
0.6878 0.5275 1.0501 0.7734
0.8141 0.6814 0.7734 1.0967
Когда это видно путем сравнения его с истинным матричным покрытием, данным ранее, оценка является удовлетворительной.
Отобразить исходный и итоговый denoised сигнализирует о типе:
kp = 0; for i = 1:4 subplot(4,3,kp+1), plot(x_orig(:,i)); axis tight; title(['Original signal ',num2str(i)]) subplot(4,3,kp+2), plot(x(:,i)); axis tight; title(['Observed signal ',num2str(i)]) subplot(4,3,kp+3), plot(x_den(:,i)); axis tight; title(['Denoised signal ',num2str(i)]) kp = kp + 3; end
Эти результаты лучше, чем ранее полученные. Первый сигнал, который неправилен, все еще правильно восстанавливается, в то время как второй сигнал, который является более регулярным, является лучшим denoised после этого второго этапа PCA.
Можно найти больше информации о многомерном шумоподавлении, включая некоторую теорию, симуляции и действительные примеры, в следующей ссылке:
М. Амингафари, Н. Чез и ДЖ-М. Poggi (2006), "Многомерное шумоподавление с помощью вейвлетов и анализа главных компонентов", Computational Statistics & Data Analysis, 50, стр 2381-2398.