Цель этого примера состоит в том, чтобы показать функции многомасштабного анализа основных компонентов (PCA), представленные в Wavelet Toolbox™.
Цель многомасштабного PCA состоит в том, чтобы восстановить упрощенный многомерный сигнал, начиная с многомерного сигнала и используя простое представление на каждом уровне разрешения. Многомасштабный анализ основных компонентов обобщает PCA многомерного сигнала, представленного в виде матрицы, путем одновременного выполнения PCA на матрицах деталей различных уровней. PCA также выполняется на матрице более грубых коэффициентов приближения в вейвлет области а также на конечной восстановленной матрице. Путем выбора количества сохраненных главных компонентов могут быть восстановлены интересные упрощенные сигналы. Этот пример использует несколько шумных тестовых сигналов и выполняет следующие шаги.
Load the multivariate signal by typing the following at the MATLAB(R) prompt:
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
.
Multiscale PCA объединяет noncentered PCA на приближениях и деталях в вейвлете области и окончательном PCA. На каждом уровне выбираются наиболее важные основные компоненты.
Сначала установите параметры вейвлета:
level = 5;
wname = 'sym4';
Затем автоматически выберите количество сохраненных основных компонентов с помощью правила Кайзера, которое сохраняет компоненты, связанные с собственными значениями, превышающими среднее значение всех собственных значений, путем ввода:
npc = 'kais';
Наконец, выполните многомасштабный PCA:
[x_sim, qual, npc] = wmspca(x ,level, wname, npc);
Для отображения исходного и упрощенного типа сигналов:
kp = 0; for i = 1:4 subplot(4,2,kp+1), plot(x (:,i)); axis tight; title(['Original signal ',num2str(i)]) subplot(4,2,kp+2), plot(x_sim(:,i)); axis tight; title(['Simplified signal ',num2str(i)]) kp = kp + 2; end
Мы видим, что результаты с точки зрения сжатия хороши. Проценты, отражающие качество восстановления столбца, заданные относительными средними квадратными ошибками, близки к 100%.
qual
qual = 1×4
98.0545 93.2807 97.1172 98.8603
Мы можем улучшить результаты путем подавления шума, потому что детали на уровнях 1-3 состоят по существу из шума с небольшими вкладами от сигнала. Удаление шума приводит к грубому, но эффективному, обесценивающему эффекту.
Выходной аргумент npc
количество сохраненных основных компонентов, выбранных по правилу Кайзера:
npc
npc = 1×7
1 1 1 1 1 2 2
Для d от 1 до 5, npc
(d) количество сохраненных несвязанных основных компонентов (ПК) для получения дополнительной информации на уровне d. npc
(6) количество сохраненных нецентрированных ПК для приближений на уровне 5 и npc
(7) количество удерживаемых ПК для окончательного PCA после вейвлет-реконструкции. Как ожидалось, правило сохраняет два основных компонента, как для приближений PCA, так и для окончательного PCA, но один основной компонент сохраняется для получения подробной информации на каждом уровне.
Чтобы подавить детали на уровнях с 1 по 3, обновите npc
аргумент следующего содержания:
npc(1:3) = zeros(1,3); npc
npc = 1×7
0 0 0 1 1 2 2
Затем снова выполните многомасштабный PCA путем ввода:
[x_sim, qual, npc] = wmspca(x, level, wname, npc);
Для отображения исходного и окончательного упрощенного типа сигналов:
kp = 0; for i = 1:4 subplot(4,2,kp+1), plot(x (:,i)); axis tight; title(['Original signal ',num2str(i)]) subplot(4,2,kp+2), plot(x_sim(:,i)); axis tight; title(['Simplified signal ',num2str(i)]) kp = kp + 2; end
Как мы видим выше, результаты улучшены.
Подробнее о многомасштабном PCA, включая некоторые теории, симуляции и реальные примеры, можно найти в следующей ссылке:
Амингхафари, М.; Cheze, N.; Погги, Дж-М. (2006), «Многомерное шумоподавление с использованием вейвлетов и анализа основных компонентов», Computational Statistics & Data Analysis, 50, pp. 2381-2398.