Цель этого примера состоит в том, чтобы показать особенности многомерного отрицания, представленные в Wavelet Toolbox™.
Многомерные проблемы, денонсирующие вейвлет, связаны с моделями формы
+ e (t)
где наблюдение X является p-мерным, F является детерминированным сигналом, подлежащим восстановлению, и e является пространственно коррелированным шумовым сигналом. В этом примере используется ряд шумовых сигналов и выполняются следующие шаги для обессоливания детерминированного сигнала.
Для загрузки многомерного сигнала введите следующий код в подсказке MATLAB ®:
load ex4mwden
whosName Size Bytes Class Attributes covar 4x4 128 double x 1024x4 32768 double x_orig 1024x4 32768 double
Как правило, только матрица данных x доступен. Здесь мы также имеем истинную матрицу ковариации шума covar и исходные сигналы x_orig. Эти сигналы являются шумными вариантами простых комбинаций двух исходных сигналов. Первый сигнал является «Blocks», который является нерегулярным, а второй - «Sine», который является регулярным, за исключением приблизительно времени 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);
Для отображения исходного и деноизированного сигналов введите следующее:
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
Как можно видеть, сравнивая его с истинным матричным коваром, приведенным ранее, оценка является удовлетворительной.
Для отображения исходных и окончательных деноизированных сигналов:
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

Эти результаты лучше, чем полученные ранее. Первый сигнал, который является нерегулярным, все еще корректно восстанавливается, в то время как второй сигнал, который является более регулярным, лучше денонсируется после этой второй ступени PCA.
Дополнительную информацию о многомерном деноизировании, включая некоторые теории, симуляции и реальные примеры, можно найти в следующей ссылке:
М. Амингхафари, Н. Чезе и Дж-М. Poggi (2006), «Multivariate denoising using wavelets and principal component analysis», Computational Statistics & Data Analysis, 50, pp. 2381-2398.