ฉันกำลังสร้างสัญญาณที่แตกต่างกันโดยใช้ 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 ประสบความสำเร็จคือสัญญาณมากที่สุดคือ Gaussian และฉันได้สังเกตสิ่งนี้ในการสร้างสัญญาณของฉัน
อย่างไรก็ตามเงื่อนไขอื่นคือสัญญาณทั้งหมดมีความเป็นอิสระทางสถิติ
ทั้งหมดที่ฉันรู้ก็คือสิ่งนี้หมายความว่าเมื่อรับสัญญาณ A & B สองสัญญาณการรู้ว่าสัญญาณหนึ่งไม่ได้ให้ข้อมูลใด ๆ ที่เกี่ยวข้องกับสิ่งอื่นเช่น: P (A | B) = P (A) โดยที่ P คือความน่าจะเป็น
ตอนนี้คำถามของฉันคือ: สัญญาณของฉันมีความเป็นอิสระหรือไม่? มีวิธีใดบ้างที่ฉันจะตัดสินได้ บางทีคุณสมบัติบางอย่างที่ต้องปฏิบัติ?
สิ่งที่ฉันได้สังเกตเห็นก็คือว่าเมื่อผมคำนวณค่าลักษณะเฉพาะของเมทริกซ์ความแปรปรวนร่วม (การคำนวณเมทริกซ์ที่มีสัญญาณผสม) eigenspectrum ที่ดูเหมือนว่าจะแสดงให้เห็นว่ามีเพียงคนเดียว (หลัก) องค์ประกอบหลัก สิ่งนี้หมายความว่าอย่างไร ไม่ควรมี 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!)
เมื่อใช้เมทริกซ์เอกลักษณ์เป็นเมทริกซ์ผสม (เช่นสัญญาณผสมเป็นเช่นเดียวกับคนเดิม) eigenspectrum 0.0103 0.0199 0.0330 0.0811 0.1762
คือ: ยังคงมีค่าหนึ่งที่มีขนาดใหญ่กว่าส่วนที่เหลือ ..
ขอขอบคุณสำหรับความช่วยเหลือของคุณ.
ฉันขอโทษถ้าคำตอบสำหรับคำถามของฉันชัดเจนถึงความเจ็บปวด แต่ฉันยังใหม่กับสถิติ ICA และ Matlab ขอบคุณอีกครั้ง.
แก้ไข
ฉันมี 500 ตัวอย่างของแต่ละสัญญาณในช่วง [0.2, 100] เป็นขั้นตอนที่ 0.2 นั่นคือ x = 0: 0.1: 100
นอกจากนี้เมื่อพิจารณา ICA Model: X = As + n (ฉันไม่ได้เพิ่มเสียงรบกวนในขณะนี้) ฉันหมายถึง eigenspectrum ของ transpose ของ X คือ eig (cov (X '))
UPDATE
ตามที่แนะนำ (อ้างถึงความคิดเห็น) ฉันลองใช้FastICAเพียง 2 สัญญาณ ผลลัพธ์ค่อนข้างดี (ดูรูปด้านล่าง) A = [0.75 0.25; 0.25 0.75]
เมทริกซ์ผสมใช้เป็น อย่างไรก็ตามไอเกนสเปคตรัม 0.1657 0.7732
ยังคงแสดงองค์ประกอบหลักเพียงองค์ประกอบเดียวเท่านั้น
ดังนั้นคำถามของฉันจึงมีดังต่อไปนี้: ฉันสามารถใช้ฟังก์ชัน / สมการ / คุณสมบัติเพื่อตรวจสอบว่าเวกเตอร์สัญญาณจำนวนหนึ่งมีความเป็นอิสระทางสถิติหรือไม่