В настоящее время я создаю различные сигналы с использованием Matlab, смешиваю их, умножая их на матрицу микширования A, а затем пытаюсь вернуть исходные сигналы с помощью FastICA .
Пока что восстановленные сигналы действительно плохи по сравнению с оригинальными, что оказалось не таким, как я ожидал.
Я пытаюсь понять, делаю ли я что-то не так. Сигналы, которые я генерирую, следующие:
s1 = (-x.^2 + 100*x + 500) / 3000; % quadratic
s2 = exp(-x / 10); % -ve exponential
s3 = (sin(x)+ 1) * 0.5; % sine
s4 = 0.5 + 0.1 * randn(size(x, 2), 1); % gaussian
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth
Одним из условий успеха ICA является то, что не более одного сигнала является гауссовским, и я наблюдал это при генерации моего сигнала.
Однако другое условие заключается в том, что все сигналы статистически независимы.
Все, что я знаю, это то, что это означает, что, учитывая два сигнала A & B, знание одного сигнала не дает никакой информации относительно другого, то есть: P (A | B) = P (A), где P - вероятность .
Теперь мой вопрос заключается в следующем: являются ли мои сигналы статистически независимыми? Есть ли способ, которым я могу определить это? Возможно, какое-то свойство, которое необходимо соблюдать?
Еще одна вещь, которую я заметил, это то, что когда я вычисляю собственные значения ковариационной матрицы (рассчитанной для матрицы, содержащей смешанные сигналы), собственный спектр, похоже, показывает, что существует только один (основной) главный компонент . Что это на самом деле значит? Разве не должно быть 5, так как у меня есть 5 (предположительно) независимых сигналов?
Например, при использовании следующей матрицы смешения:
A =
0.2000 0.4267 0.2133 0.1067 0.0533
0.2909 0.2000 0.2909 0.1455 0.0727
0.1333 0.2667 0.2000 0.2667 0.1333
0.0727 0.1455 0.2909 0.2000 0.2909
0.0533 0.1067 0.2133 0.4267 0.2000
Собственные значения: 0.0000 0.0005 0.0022 0.0042 0.0345
(только 4!)
При использовании матрицы тождественности в качестве матрицы смешения (т.е. смешанные сигналы , такие же , как и оригинальные), то есть спектр собственных: 0.0103 0.0199 0.0330 0.0811 0.1762
. Там все еще есть одно значение, намного большее, чем остальные.
Спасибо за помощь.
Я извиняюсь, если ответы на мои вопросы до боли очевидны, но я действительно плохо знаком со статистикой, ICA и Matlab. Еще раз спасибо.
РЕДАКТИРОВАТЬ
У меня есть 500 выборок каждого сигнала в диапазоне [0,2, 100] с шагом 0,2, то есть х = 0: 0,1: 100.
Кроме того, учитывая модель ICA: X = As + n (в данный момент я не добавляю шума), я имею в виду собственный спектр транспонирования X, то есть eig (cov (X ')).
ОБНОВИТЬ
Как и предлагалось (см. Комментарии), я попробовал FastICA только на 2 сигналах. Результаты были довольно хорошими (см. Рис ниже). Используемая матрица смешивания была A = [0.75 0.25; 0.25 0.75]
. Тем не менее, eigenspectrum по- 0.1657 0.7732
прежнему показал только один основной основной компонент.
Поэтому мой вопрос сводится к следующему: какую функцию / уравнение / свойство я могу использовать, чтобы проверить, является ли число векторов сигнала статистически независимым?