В настоящее время я создаю различные сигналы, используя Matlab, смешиваю их, умножая их на матрицу микширования A, а затем пытаюсь вернуть исходные сигналы, используя FastICA .
Пока что восстановленные сигналы действительно плохи по сравнению с исходными, что было не так, как я ожидал.
Я пытаюсь понять, делаю ли я что-то не так. Я генерирую следующие сигналы: (Амплитуды находятся в диапазоне [0,1].)
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, т. Е. x = 0:0.1:100
.
РЕДАКТИРОВАТЬ - Учитывая модель ICA: X = As + n (сейчас я не добавляю шума), но я имею в виду собственный спектр транспонирования X, то есть eig(cov(X'))
.