wmspca

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

    Описание

    пример

    [xsim,qual,npc_out,decsim,pca_params] = wmspca(x,level,wname,npc_in) возвращает упрощенную версию xsim из входной матрицы x полученный из основанного на вейвлете многошкального анализа главных компонентов (PCA). Разложение вейвлета выполняется с помощью уровня разложения level и вейвлет wname.

    [___] = wmspca(x,level,wname,'mode',extmode,npc_in) использует заданный режим extmode расширения дискретного вейвлета преобразовывает (DWT).

    [___] = wmspca(dec,npc_in) использует структуру разложения вейвлета dec. dec как ожидают, будет выходом mdwtdec.

    Примеры

    свернуть все

    Используйте вейвлет многошкальный анализ главных компонентов для denoise многомерный сигнал.

    Загрузите набор данных, состоящий из четырех сигналов длины 1024. Постройте исходные сигналы и сигналы с аддитивным шумом.

    load ex4mwden
    for i = 0:3
        subplot(4,2,2*i+1)
        plot(x_orig(:,i+1))
        axis tight
        title(['Original signal ',num2str(i+1)])
        subplot(4,2,2*i+2)
        plot(x(:,i+1))
        axis tight
        title(['Noisy signal ',num2str(i+1)])
    end

    Figure contains 8 axes objects. Axes object 1 with title Original signal 1 contains an object of type line. Axes object 2 with title Noisy signal 1 contains an object of type line. Axes object 3 with title Original signal 2 contains an object of type line. Axes object 4 with title Noisy signal 2 contains an object of type line. Axes object 5 with title Original signal 3 contains an object of type line. Axes object 6 with title Noisy signal 3 contains an object of type line. Axes object 7 with title Original signal 4 contains an object of type line. Axes object 8 with title Noisy signal 4 contains an object of type line.

    Выполните первый многошкальный вейвлет PCA использование Добечи меньше всего - асимметричный вейвлет с четырьмя исчезающими моментами, sym4. Получите разложение мультиразрешения вниз к уровню 5. Используйте эвристическое правило, чтобы решить сколько основных компонентов, чтобы сохранить.

    level = 5;
    wname = 'sym4';
    npc = 'heur';
    [x_sim,qual,npcA] = wmspca(x,level,wname,npc);

    Постройте результат и исследуйте качество приближения.

    for i = 0:3
        subplot(4,2,2*i+1)
        plot(x(:,i+1))
        axis tight
        title(['Noisy signal ',num2str(i+1)])
        subplot(4,2,2*i+2)
        plot(x_sim(:,i+1))
        axis tight
        title(['First PCA ',num2str(i+1)])
    end

    Figure contains 8 axes objects. Axes object 1 with title Noisy signal 1 contains an object of type line. Axes object 2 with title First PCA 1 contains an object of type line. Axes object 3 with title Noisy signal 2 contains an object of type line. Axes object 4 with title First PCA 2 contains an object of type line. Axes object 5 with title Noisy signal 3 contains an object of type line. Axes object 6 with title First PCA 3 contains an object of type line. Axes object 7 with title Noisy signal 4 contains an object of type line. Axes object 8 with title First PCA 4 contains an object of type line.

    qual
    qual = 1×4
    
       97.4372   94.5520   97.7362   99.5219
    
    

    Качественные результаты - все близко к 100%. npc вектор дает количество основных компонентов, сохраненных на каждом уровне.

    Подавите шум путем удаления основных компонентов на уровнях 1-3. Выполните многошкальный PCA снова.

    npcA(1:3) = zeros(1,3);
    [x_sim,qual,npcB] = wmspca(x,level,wname,npcA);

    Постройте результат.

    for i = 0:3
        subplot(4,2,2*i+1)
        plot(x(:,i+1))
        axis tight
        title(['Noisy signal ',num2str(i+1)])
        subplot(4,2,2*i+2)
        plot(x_sim(:,i+1))
        axis tight
        title(['Second PCA ',num2str(i+1)])
    end

    Figure contains 8 axes objects. Axes object 1 with title Noisy signal 1 contains an object of type line. Axes object 2 with title Second PCA 1 contains an object of type line. Axes object 3 with title Noisy signal 2 contains an object of type line. Axes object 4 with title Second PCA 2 contains an object of type line. Axes object 5 with title Noisy signal 3 contains an object of type line. Axes object 6 with title Second PCA 3 contains an object of type line. Axes object 7 with title Noisy signal 4 contains an object of type line. Axes object 8 with title Second PCA 4 contains an object of type line.

    Входные параметры

    свернуть все

    Мультисигнал в виде матрицы с действительным знаком. Матричный x содержит сигналы P длины, которую N сохранил по столбцам (N> P).

    Типы данных: double

    Уровень разложения в виде положительного целого числа. wmspca не осуществляет ограничение максимального уровня. Использование wmaxlev гарантировать, что коэффициенты вейвлета свободны от граничных эффектов. Если граничные эффекты не являются беспокойством, хорошее правило состоит в том, чтобы установить level меньше чем или равный fix(log2(length(N))), где N является длиной сигнала.

    Типы данных: double

    Анализ вейвлета в виде вектора символов или строкового скаляра. Вейвлет должен быть ортогональным или биоортогональным. Ортогональные и биоортогональные вейвлеты определяются как тип 1 и вейвлеты типа 2 соответственно в менеджере по вейвлету, wavemngr.

    • Допустимые встроенные ортогональные семейства вейвлетов начинают с 'haar', 'dbN', 'fkN', 'coifN', или 'symN', где N является номером исчезающих моментов для всех семейств кроме fk. Для fk, N является количеством коэффициентов фильтра.

    • Допустимые биоортогональные семейства вейвлетов начинают с 'biorNr.Nd' или 'rbioNd.Nr', где Nr и Nd являются номером исчезающих моментов в реконструкции (синтез) и разложение (анализ) вейвлет.

    Определите допустимые значения в течение исчезающих моментов при помощи waveinfo с кратким названием семейства вейвлетов. Например, введите waveinfo('db') или waveinfo('bior'). Используйте wavemngr('type',WNAME) определить, является ли вейвлет ортогональным (возвращается 1), или биоортогональный (возвращается 2).

    Параметр основных компонентов в виде вектора, вектора символов или строкового скаляра.

    • Если npc_in вектор, затем это должен иметь длину level+2. Векторный npc_in содержит количество сохраненных основных компонентов для каждого выполняемого PCA:

      • npc_in(d) количество сохраненных основных компонентов нев центре для деталей на уровне d, для 1 ≤ dlevel.

      • npc_in(level+1) количество сохраненных основных компонентов нев центре для приближений на уровне level.

      • npc_in(level+2) количество сохраненных основных компонентов для итогового PCA после реконструкции вейвлета.

      npc_in должно быть таково что 0 ≤ npc_in(d)P, где P является количеством сигналов для 1 ≤ dlevel+2.

    • Если npc_in "kais", затем количество сохраненных основных компонентов выбрано, автоматически использовав правило Кайзера. Правило кайзера сохраняет компоненты сопоставленными с собственными значениями, превышающими среднее значение всех собственных значений.

    • Если npc_in "heur", затем количество сохраненных основных компонентов выбрано, автоматически использовав эвристическое правило. Эвристическое правило сохраняет компоненты сопоставленными с собственными значениями больше, чем 0.05 раза сумма всех собственных значений.

    • Если npc_in "nodet", затем детали "уничтожаются", и все приближения сохраняются.

    Типы данных: double | string | char

    Дополнительный режим, используемый при выполнении разложения вейвлета в виде:

    mode

    Режим расширения DWT

    'zpd'

    Дополнение нулями

    'sp0'

    Сглаживайте расширение порядка 0

    'spd' (or 'sp1')

    Сглаживайте расширение порядка 1

    'sym' или 'symh'

    Симметричное расширение (половина точки): граничное значение симметричная репликация

    'symw'

    Симметричное расширение (самое главное): граничное значение симметричная репликация

    'asym' или 'asymh'

    Антисимметричное расширение (половина точки): граничное значение антисимметричная репликация

    'asymw'

    Антисимметричное расширение (самое главное): граничное значение антисимметричная репликация

    'ppd', 'per'

    Расширение Periodized

    Если длина сигнала является нечетной и mode 'per', дополнительная выборка, равная последнему значению, добавляется направо, и расширение выполняется в 'ppd' режим. Если длина сигнала является четной, 'per' эквивалентно 'ppd'. Это правило также применяется к изображениям.

    Глобальная переменная, управляемая dwtmode задает режим расширения по умолчанию. Использование dwtmode определить дополнительные режимы.

    Структура разложения вейвлета мультисигнала в виде структуры. dec как ожидают, будет выходом mdwtdec. Вход мультисигнала mdwtdec матричный A, где сигналы располагаются по столбцам. Если A является N-by-P, то N должен быть больше P.

    Типы данных: double

    Выходные аргументы

    свернуть все

    Упрощенный многомерный мультисигнал, возвращенный как матрица. Размерности xsim равняйтесь размерностям x.

    Типы данных: double

    Качество реконструкций столбца, возвращенных как вектор из длины P, где P равен size(x,2). qual содержит качество реконструкций столбца, данных относительными среднеквадратичными погрешностями в проценте.

    Типы данных: double

    Количество сохраненных основных компонентов, возвращенных как вектор. Если npc_in вектор, затем npc_out равняется npc_in.

    Типы данных: double

    Разложение вейвлета упрощенного xsim мультисигнала, возвращенный как структура со следующими полями:

    • dirDec C (столбец), индикатор направления разложения

    • level — Уровень разложения вейвлета

    • wname — Имя вейвлета

    • dwtFilters — Структура с четырьмя полями:

      • LoD — Фильтр разложения Lowpass

      • HiD — Фильтр разложения Highpass

      • LoR — Фильтр реконструкции Lowpass

      • HiR — Фильтр реконструкции Highpass

    • dwtEXTM — Режим расширения DWT

    • dwtShift — DWT переключают параметр (0 или 1)

    • dataSize — Размер x

    • ca — Коэффициенты приближения на уровне level

    • cd — Массив ячеек коэффициентов детали, от уровня 1 до уровня level

    ca и cd{k}, для k от 1 до level, матрицы, где коэффициенты хранятся как столбцы.

    Параметры PCA, возвращенные как массив структур длины level+2, где:

    • pca_params(d).pc P-by-P матрица основных компонентов. Столбцы хранятся в порядке убывания отклонений.

    • pca_params(d).variances вектор отклонений основного компонента.

    • pca_params(d).npc = npc_out

    Алгоритмы

    Многошкальные основные компоненты обобщают обычный PCA многомерного сигнала, рассматриваемого как матрица путем выполнения одновременно PCA на матрицах деталей разных уровней. Кроме того, PCA выполняется также на более грубой содействующей матрице приближения в области вейвлета, а также на финале восстановленная матрица. Путем выбора удобно количеств сохраненных основных компонентов, могут быть восстановлены интересные упрощенные сигналы.

    Ссылки

    [1] Bakshi, Бхэвик Р. “Многошкальный PCA с Приложением к Многомерному Статистическому Контролю Процесса”. Журнал 44 AIChE, № 7 (июль 1998): 1596–1610. https://doi.org/10.1002/aic.690440712.

    Представленный в R2006b