Многошкальный анализ главных компонентов
[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
является вектором, то это должен иметь длину 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.