Tôi hiện đang tạo các tín hiệu khác nhau bằng Matlab, trộn chúng bằng cách nhân chúng với ma trận trộn A, và sau đó cố gắng lấy lại các tín hiệu gốc bằng FastICA .
Cho đến nay, các tín hiệu phục hồi thực sự tồi tệ khi so sánh với các tín hiệu ban đầu, đó không phải là điều tôi mong đợi.
Tôi đang cố gắng xem liệu tôi có làm gì sai không. Các tín hiệu tôi đang tạo như sau:
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
Một điều kiện để ICA thành công là nhiều nhất một tín hiệu là Gaussian và tôi đã quan sát điều này trong quá trình tạo tín hiệu của mình.
Tuy nhiên, một điều kiện khác là tất cả các tín hiệu là độc lập thống kê.
Tất cả những gì tôi biết là điều này có nghĩa là, đưa ra hai tín hiệu A & B, biết một tín hiệu không cung cấp bất kỳ thông tin nào liên quan đến tín hiệu kia, tức là: P (A | B) = P (A) trong đó P là xác suất .
Bây giờ câu hỏi của tôi là: Các tín hiệu của tôi có độc lập thống kê không? Có cách nào tôi có thể xác định điều này? Có lẽ một số tài sản phải được quan sát?
Một điều khác mà tôi nhận thấy là khi tôi tính toán giá trị riêng của ma trận hiệp phương sai (tính cho ma trận chứa các tín hiệu hỗn hợp), eigenspectrum dường như chỉ có một thành phần chính (chính) . Ý nghĩa thực sự của điều này là gì? Không nên có 5, vì tôi có 5 tín hiệu độc lập (được cho là)?
Ví dụ: khi sử dụng ma trận trộn sau:
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
Các giá trị riêng là: 0.0000 0.0005 0.0022 0.0042 0.0345
(chỉ 4!)
Khi sử dụng ma trận danh tính làm ma trận trộn (tức là các tín hiệu hỗn hợp giống với ma trận gốc), eigenspectrum là : 0.0103 0.0199 0.0330 0.0811 0.1762
. Vẫn còn một giá trị lớn hơn nhiều so với phần còn lại ..
Cảm ơn sự giúp đỡ của bạn.
Tôi xin lỗi nếu câu trả lời cho câu hỏi của tôi rất rõ ràng, nhưng tôi thực sự mới đối với thống kê, ICA và Matlab. Cảm ơn một lần nữa.
BIÊN TẬP
Tôi có 500 mẫu của mỗi tín hiệu, trong phạm vi [0,2, 100], trong các bước 0,2, tức là x = 0: 0,1: 100.
Ngoài ra, với Mô hình ICA: X = As + n (Hiện tại tôi không thêm bất kỳ tiếng ồn nào), tôi đang đề cập đến eigenspectrum của chuyển vị của X, tức là eig (cov (X ')).
CẬP NHẬT
Theo đề xuất (tham khảo ý kiến), tôi đã thử FastICA chỉ với 2 tín hiệu. Kết quả khá tốt (xem pic dưới đây). Ma trận trộn được sử dụng là A = [0.75 0.25; 0.25 0.75]
. Tuy nhiên, eigenspectrum 0.1657 0.7732
vẫn chỉ hiển thị một thành phần chính.
Do đó, câu hỏi của tôi rút ra những điều sau: Tôi có thể sử dụng hàm / phương trình / thuộc tính nào để kiểm tra xem một số vectơ tín hiệu có độc lập thống kê không?