wmspca

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

Синтаксис

[X_SIM,QUAL,NPC,DEC_SIM,PCA_Params] = wmspca(X,LEVEL,WNAME,NPC)
[...] = wmspca(X,LEVEL,WNAME,'mode',EXTMODE,NPC)
[...] = wmspca(DEC,NPC)
[...] = wmspca(X,LEVEL,WNAME,'mode',EXTMODE,NPC)

Описание

[X_SIM,QUAL,NPC,DEC_SIM,PCA_Params] = wmspca(X,LEVEL,WNAME,NPC) или [...] = wmspca(X,LEVEL,WNAME,'mode',EXTMODE,NPC) возвращает упрощенную версию X_SIM входной матрицы X, полученный из основанного на вейвлете многошкального анализа главных компонентов (PCA).

Входная матрица X содержит сигналы P длины N, сохранила по столбцам (N > P).

Параметры разложения вейвлета

Разложение вейвлета выполняется с помощью уровня разложения LEVEL и вейвлет WNAME.

EXTMODE является расширенным режимом для DWT (См. dwtmode).

Если разложение, DEC, полученный с помощью mdwtdec, доступен, можно использовать

[...] = wmspca(DEC,NPC) вместо

[...] = wmspca(X,LEVEL,WNAME,'mode',EXTMODE,NPC).

Параметр основных компонентов: NPC

Если NPC является вектором, то это должен иметь длину LEVEL+2. Это содержит количество сохраненных основных компонентов для каждого выполняемого PCA:

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

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

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

NPC должен быть таков что 0 <= NPC(d) <= P для 1 <= d <= LEVEL +2.

Если   NPC = 'kais' (соответственно, 'heur'), то количество сохраненных основных компонентов выбрано, автоматически использовав правило Кайзера (или эвристическое правило).

  • Правило кайзера сохраняет компоненты сопоставленными с собственными значениями больше среднее значение всех собственных значений.

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

Если NPC = 'nodet', то детали “уничтожаются” и все приближения, сохраняется.

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

X_SIM является упрощенной версией матричного X.

QUAL является вектором длины P, содержащий качество реконструкций столбца, данных относительными среднеквадратичными погрешностями в проценте.

NPC является вектором выбранных количеств сохраненных основных компонентов.

DEC_SIM является разложением вейвлета X_SIM

PCA_Params является массивом структур длины LEVEL+2, таким образом что:

  • PCA_Params(d).pc является P-by-P матрица основных компонентов.

    Столбцы хранятся в порядке убывания отклонений.

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

  • PCA_Params(d).npc = NPC

Примеры

Анализ главных компонентов вейвлета шумного многомерного сигнала

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

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

load ex4mwden;
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(['Noisy signal ',num2str(i)])
    kp = kp + 2;
end

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

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

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

qual
qual = 1×4

   97.4064   94.6863   97.8333   99.5441

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

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

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

npc(1:3) = zeros(1,3);
[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(['Noisy signal ',num2str(i)])
    subplot(4,2,kp+2)
    plot(x_sim(:,i))
    axis tight
    title(['Second PCA ',num2str(i)])
    kp = kp+2;
end

Алгоритмы

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

Ссылки

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

Bakshi, B. (1998), “Многошкальный PCA с приложением к контролю MSPC”, AIChE J., 44, стр 1596–1610.

Смотрите также

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