Многошкальный анализ основных компонентов

Цель этого примера состоит в том, чтобы показать функции многошкального анализа основных компонентов (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.

Выполните простой многошкальный PCA

Многошкальные объединения 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) является количеством сохраненных основных компонентов нев центре (PC) для деталей на уровне d. npc (6) является количеством сохраненных PC нев центре для приближений на уровне 5, и npc (7) является количеством сохраненных PC для итогового 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, включая некоторую теорию, симуляции и действительные примеры, может быть найден в следующей ссылке:

Aminghafari, М.; Чез, Н.; Погги, J-M. (2006), "Многомерное шумоподавление с помощью вейвлетов и анализа главных компонентов", Computational Statistics & Data Analysis, 50, стр 2381-2398.

Для просмотра документации необходимо авторизоваться на сайте