2012-02-21 4 views
5

मैं वर्तमान में मैटलैब का उपयोग करके विभिन्न सिग्नल बना रहा हूं, उन्हें मिश्रित मैट्रिक्स ए द्वारा गुणा करके मिश्रण कर रहा हूं, और फिर 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 
के लिए आईसीए सफल होने के लिए

Original Signals

एक शर्त यह है कि अधिक से अधिक एक संकेत गाऊसी है , और मैंने इसे अपनी सिग्नल पीढ़ी में देखा है।

हालांकि, एक और शर्त यह है कि सभी सिग्नल सांख्यिकीय रूप से स्वतंत्र हैं।

मुझे पता है कि इसका मतलब है कि, दो सिग्नल ए & बी दिया गया है, एक सिग्नल को जानना दूसरे के संबंध में कोई जानकारी नहीं देता है, यानी: पी (ए | बी) = पी (ए) जहां पी संभावना है।

अब मेरा प्रश्न यह है: क्या मेरे सिग्नल सांख्यिकीय रूप से स्वतंत्र हैं? क्या कोई तरीका है कि मैं इसे निर्धारित कर सकता हूं? शायद कुछ संपत्ति जो मनाई जानी चाहिए?

एक और बात मैंने देखा है यह है कि जब मैं सहप्रसरण मैट्रिक्स के eigenvalues ​​गणना (मिश्रित संकेतों युक्त मैट्रिक्स के लिए गणना), 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 

eigenvalues ​​हैं: 0.0000 0.0005 0.0022 0.0042 0.0345 (! केवल 4)

मिश्रण मैट्रिक्स के रूप में पहचान मैट्रिक्स (यानी मिश्रित संकेत हैं का उपयोग करते समय मूल के समान ही), eigenspectrum है: 0.0103 0.0199 0.0330 0.0811 0.1762। बाकी के मुकाबले अभी भी एक मूल्य बहुत बड़ा है ..

आपकी मदद के लिए धन्यवाद।

मैं क्षमा चाहता हूं कि मेरे प्रश्नों के उत्तर दर्दनाक रूप से स्पष्ट हैं, लेकिन मैं आंकड़ों, आईसीए और मैटलैब के लिए वास्तव में नया हूं। एक बार फिर धन्यवाद।

EDIT - मेरे पास प्रत्येक सिग्नल के 500 नमूने हैं, [0.2, 100], 0.2 के चरणों में, यानी x = 0:0.1:100

संपादित करें - को देखते हुए आईसीए मॉडल: एक्स = के रूप में + n (मैं इस समय किसी भी शोर जोड़ने नहीं कर रहा हूँ), लेकिन मुझे अर्थात eig(cov(X')) एक्स के पक्षांतरित की eigenspectrum की चर्चा करते हुए कर रहा हूँ,।

उत्तर

0

यह पता लगाने के लिए कि सिग्नल पारस्परिक रूप से स्वतंत्र हैं या नहीं, आप here वर्णित तकनीकों को देख सकते हैं सामान्यतः दो यादृच्छिक चर स्वतंत्र हैं यदि वे ऑर्थोगोनल हैं।इसका अर्थ यह है कि: ई {s1 * s2} = 0 मतलब यह है कि यादृच्छिक चर s1 द्वारा गुणा किए गए यादृच्छिक चर s1 की अपेक्षा शून्य है। यह ऑर्थोगोनिटी हालत आंकड़ों और संभावनाओं में बेहद महत्वपूर्ण है और हर जगह दिखाती है। दुर्भाग्य से यह एक समय में 2 चर पर लागू होता है। बहुआयामी तकनीकें हैं, लेकिन कोई भी नहीं जो मुझे आरामदायक अनुशंसा महसूस करेगा। एक और लिंक जिसे मैंने खोला था यह one था, यह सुनिश्चित नहीं है कि आपका आवेदन क्या है, लेकिन वह पेपर बहुत अच्छी तरह से किया गया है।

जब मैं सहप्रसरण मैट्रिक्स की गणना मैं:

cov(A) = 
0.0619 -0.0284 -0.0002 -0.0028 -0.0010 
-0.0284 0.0393 0.0049 0.0007 -0.0026 
-0.0002 0.0049 0.1259 0.0001 -0.0682 
-0.0028 0.0007 0.0001 0.0099 -0.0012 
-0.0010 -0.0026 -0.0682 -0.0012 0.0831 
eigenvectors साथ

, V और महत्व देता D:

[V,D] = eig(cov(A)) 

V = 

-0.0871 0.5534 0.0268 -0.8279 0.0063 
-0.0592 0.8264 -0.0007 0.5584 -0.0415 
-0.0166 -0.0352 0.5914 -0.0087 -0.8054 
-0.9937 -0.0973 -0.0400 0.0382 -0.0050 
-0.0343 0.0033 0.8050 0.0364 0.5912 
D = 
0.0097   0   0   0   0 
    0 0.0200   0   0   0 
    0   0 0.0330   0   0 
    0   0   0 0.0812   0 
    0   0   0   0 0.1762 

यहाँ मेरी कोड है:

x = transpose(0.2:0.2:100); 
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(length(x), 1); % gaussian 
s5 = (sawtooth(x, 0.75)+ 1) * 0.5; % sawtooth 
A = [s1 s2 s3 s4 s5]; 
cov(A) 
[V,D] = eig(cov(A)) 

मुझे अगर जानते हैं मैं और भी मदद कर सकता हूं, या अगर मैं गलत समझता हूं।

EDIT उचित रूप से eigenvalues ​​और vectors को संदर्भित किया गया, 0.2 नमूना अंतराल जोड़ा कोड इस्तेमाल किया।

+0

मैंने x = 0.2: 0.2: 100 का उपयोग किया (मैंने अभी यह विवरण मेरे मूल प्रश्न में जोड़ा है - इसे इंगित करने के लिए धन्यवाद।) आप उस कॉन्वर्स मैट्रिक्स पर कैसे पहुंचे? मिश्रित मैट्रिक्स ए के लिए कॉन्वर्सिस मैट्रिक्स जो मैंने प्रश्न में पोस्ट किया है वह अलग है। इसके अलावा, eig (cov (ए) का उपयोग करके) आपको मैट्रिक्स के eigenvectors, eigenvalctors देता है। इसके अलावा, मैं ए के कॉन्वर्सिस मैट्रिक्स के eigenvalues ​​का जिक्र नहीं कर रहा था, लेकिन मिश्रित संकेतों के covariance मैट्रिक्स के eigenvalues। इसे स्पष्ट करने के लिए मैं इसे अपने प्रश्न में जोड़ दूंगा। – Rachel

+0

ओह और लिंक के लिए धन्यवाद, लेकिन क्या आप आगे की व्याख्या कर सकते हैं? जैसे मैंने कहा, मैं एक आंकड़े नौसिखिया हूँ। मैं जानना चाहता हूं कि क्या एक सामान्य विधि है जिसका प्रयोग यह जांचने के लिए किया जाता है कि कितने सिग्नल सांख्यिकीय रूप से स्वतंत्र हैं या नहीं। – Rachel

+0

आपकी टिप्पणी के लिए धन्यवाद, हालांकि, यह वास्तव में मुझे कहीं भी नहीं मिला है। मेरी समस्या ईगेंवल्यू की गणना करने की नहीं थी, लेकिन इतनी अधिक क्यों कि eigenvalues ​​वे हैं .. आप देख सकते हैं कि eigenvalues ​​में से एक अपेक्षाकृत बड़ा है।मुझे लगता है कि सांख्यिकीय रूप से स्वतंत्र संकेतों के लिए, eigenvalues ​​कम या कम बराबर होगा, और मैं यह जानना चाहता हूं कि यह सच है या नहीं। इसके अलावा मुझे यह जांचने के लिए एक ठोस तरीका नहीं मिला है कि मेरे सिग्नल स्वतंत्र हैं या नहीं। – Rachel

1

आपके सिग्नल सहसंबंधित (स्वतंत्र नहीं) हैं। बल्ले से बाहर, सॉटूओथ और साइन एक ही अवधि हैं। मुझे एक के मूल्य बताओ मैं आपको दूसरे, सही सहसंबंध का मूल्य बताऊंगा।

यदि आप उनमें से एक की अवधि बदलते हैं जो उन्हें अधिक स्वतंत्र बना देगा।

इसके अलावा एस 1 और एस 2 थोड़े से संबंधित हैं।

ईजीन के लिए, आपके सभी संकेतों में से पहला स्वतंत्र नहीं है (ऊपर देखें)।

दूसरा, आपका फ़िल्टर मैट्रिक्स ए भी अच्छी तरह से वातानुकूलित नहीं है, और आपके ईगेंवल्यू को आगे बढ़ा रहा है।

यहां तक ​​कि अगर आप पांच पूरी तरह से स्वतंत्र में पाइप के लिए गए थे (आईआईडी, पर होने वाली बात) का संकेत सहप्रसरण होगा:

E[ A y y' A' ] = E[ A I A' ] = A A' 

eigenvalues ​​कि के होते हैं:

eig(A*A') 
ans = 

    0.000167972216475 
    0.025688510850262 
    0.035666735304024 
    0.148813869149738 
    1.042451912479502 

तो तुम कर रहे हैं वास्तव में एक सिग्नल फ़ंक्शन/आजादी की डिग्री पर सभी सिग्नल को फ़िल्टर/स्क्विंग करना और निश्चित रूप से वे ठीक करने के लिए कठिन होंगे, जो भी विधि आप उपयोग करते हैं।

+0

आपकी टिप्पणी @Nate के लिए धन्यवाद। यदि आपके मन में कोई सवाल नहीं है, तो मेरे पास कुछ प्रश्न हैं। सबसे पहले, "पांच पूरी तरह से स्वतंत्र (iid, yada yada) संकेतों से आपका क्या मतलब है"। आप कैसे जानेंगे कि सिग्नल वास्तव में स्वतंत्र हैं या नहीं? और क्या है (iid, yada, yada)? – Rachel

संबंधित मुद्दे