현재 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에 익숙하지 않습니다. 다시 감사합니다.
편집하다
0.2 단계, 즉 x = 0 : 0.1 : 100 범위에서 [0.2, 100] 범위의 각 신호에 대해 500 개의 샘플이 있습니다.
또한 ICA 모델 : X = As + n (현재 노이즈를 추가하지 않음)을 감안할 때 X의 전치의 고유 스펙트럼, 즉 eig (cov (X '))를 참조합니다.
최신 정보
제안 된대로 (댓글 참조), 나는 단지 2 개의 신호로 FastICA 를 시도 했습니다 . 결과는 꽤 좋았습니다 (아래 그림 참조). 사용 된 혼합 매트릭스는이었다 A = [0.75 0.25; 0.25 0.75]
. 그러나, 고유 스펙트럼은 0.1657 0.7732
여전히 하나의 주요 주성분만을 보여 주었다.
따라서 제 질문은 다음과 같이 요약됩니다 . 많은 신호 벡터가 통계적으로 독립적인지 확인하기 위해 어떤 함수 / 방정식 / 속성을 사용할 수 있습니까?