Цель этого примера - показать особенности многомасштабного анализа главных компонентов (PCA), представленные в вейвлет- Toolbox™.
Целью многомасштабного PCA является восстановление упрощенного многомерного сигнала, начиная с многомерного сигнала и используя простое представление на каждом уровне разрешения. Анализ многомасштабных главных компонентов обобщает PCA многомерного сигнала, представленного в виде матрицы, путем одновременного выполнения PCA на матрицах деталей различных уровней. PCA также выполняется на матрице коэффициентов грубой аппроксимации в вейвлет-области, а также на окончательной реконструированной матрице. Выбирая количество сохраненных главных компонентов, можно восстанавливать интересные упрощенные сигналы. В этом примере используется ряд шумных тестовых сигналов и выполняются следующие шаги.
Load the multivariate signal by typing the following at the MATLAB(R) prompt:
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.
Multiscale PCA объединяет нецентрированную 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, включая некоторые теории, симуляции и реальные примеры, можно найти в следующей ссылке:
Амингхафари, М.; Чезе, Н.; Погги, Дж-М. (2006), «Многофакторное деноизирование с использованием вейвлетов и анализа основных компонентов», Computational Statistics & Data Analysis, 50, pp. 2381-2398.