2017-03-04 8 views
6

MATLAB का उपयोग करके मैं सिग्नल का अनुमान लगाने के लिए मिलान पीछा लागू करता हूं। मेरी समस्या यह है कि मैं चयनित परमाणुओं के समय-आवृत्ति प्रतिनिधित्व को देखने के लिए संघर्ष करता हूं। मैं निम्नलिखित छवि (source) के समान एक विग्नर साजिश का उत्पादन करने की कोशिश कर रहा हूं।मैचिंग पीछा परमाणुओं के लिए MATLAB Wigner साजिश

enter image description here

मैं तरंगिका उपकरण बॉक्स, सिग्नल प्रोसेसिंग उपकरण बॉक्स के साथ ही खुला स्रोत समय आवृत्ति उपकरण बॉक्स में देखा है, लेकिन मैं कर रहा हूँ संभवतः सिर्फ गलत पैरामीटर का उपयोग कर, क्योंकि सिग्नल प्रोसेसिंग के साथ मेरा अनुभव काफी है सीमित।

उदाहरण

this data मेरा लक्ष्य का उपयोग करते हुए ऊपर से भूखंड पुन: पेश करने के लिए है।

% fit the signal using MP 
itermax = 50; 
signal = load('signal.txt'); 
dict = wmpdictionary(length(signal)); 
[signal_fit, r, coeff, iopt, qual, X] = wmpalg('OMP', signal, dict, ... 
               'itermax', itermax); 

% wigner plot of the simulated signal 
tfrwv(signal_fit) % wigner-ville function from time-frequency toolbox 

% wigner plot of each atom 
atoms = full(dict(:, iopt)) % selected atoms 
for i = 1:itermax 
    tfrwv(atoms(:, i)) 
end 

दुर्भाग्य से, जिसके परिणामस्वरूप भूखंडों में से कोई भी लक्ष्य दृश्य के करीब आता है। ध्यान दें, उदाहरण के लिए मैं मानक पैरामीटर के साथ tfrwv का उपयोग करता हूं जो मैं जीयूआई के साथ ट्विक करता हूं जो इसे खुलता है।

मैं आपकी मदद की बहुत सराहना करता हूं।

अद्यतन

मुझे लगता है कि मैं अब समझ आ गया है एक गेबर परमाणुओं का उपयोग करने के आकार बढ़ाया Gaussians जैसी साथ धब्बे पाने के लिए जरूरत है। दुर्भाग्यवश, सिग्नल प्रोसेसिंग टूलबॉक्स के पूर्वनिर्धारित डिब्बे में कोई गैबर फ़ंक्शन नहीं हैं।

tf-representation of selected of atoms

मेरी भूखंडों के बाद से करीब आ लेकिन सही नहीं हैं, वहां अभी भी दो सवाल खुले हैं: हालांकि, this question मुझे आवश्यक शब्दकोशों, जैसे कि मैं परमाणुओं जो काफी उदाहरण की तरह लग पाने को लागू करने में मदद की:

  • क्या हम पहले उदाहरण में देखे गए सभी ब्लॉब्स को केवल गैबर परमाणुओं द्वारा मॉडलिंग किया जा सकता है, या क्या मुझे कार्यों का एक और शब्दकोश चाहिए?
  • मैं व्यक्तिगत दृश्य छवियों को एक दृश्य में कैसे जोड़ सकता हूं?
+0

शायद तुम चित्र का कैप्शन का उपयोग करने के बजाय 'tfrwv' का उपयोग कर के, अपने खुद के दृश्य कोड लिखने के लिए कर सकते हैं। "गर्मी नक्शा (ऊपर) में प्रत्येक पिक्सेल एक परमाणु (एक तरंगिका क्षैतिज स्थिति को और आवृत्ति ऊंचाई करने के लिए इसी के साथ अनुसार समय में केंद्रित) का प्रतिनिधित्व करता है। पिक्सेल के रंग संकेत के साथ इसी तरंगिका परमाणु के आंतरिक उत्पाद देता है (तल)।" आपको अपने परमाणु मिल गए हैं, इसलिए अब आपको आंतरिक उत्पाद लेने की आवश्यकता है। – Cecilia

+0

आपकी टिप्पणी के लिए धन्यवाद। परमाणुओं को प्लॉट करना मुख्य समस्या नहीं है जो मुझे विश्वास है। कृपया मेरे वर्तमान स्थिति के लिए अद्यतन देखें। – imant

उत्तर

3

अपने दूसरे प्रश्न का उत्तर देने के 'कैसे मैं एक ही दृश्य में indidividual imagesc भूखंडों को जोड़ सकते हैं?'

आप एक से अधिक 2 डी मैट्रिक्स है कि आप मिलाती हैं और imagesc का उपयोग कर प्रदर्शित करने के लिए चाहते हैं, तो मैं तत्व के लिहाज से अधिकतम लेने का सुझाव देते हैं।

उदाहरण के लिए, मैं गॉसियन के साथ दो 31x31 ग्रिड उत्पन्न करता हूं जिसमें विभिन्न माध्य और भिन्नता होती है।

function F = generate2dGauss(mu, Sigma) 
    x1 = -3:.2:3; x2 = -3:.2:3; 
    [X1,X2] = meshgrid(x1,x2); 
    F = mvnpdf([X1(:) X2(:)],mu,Sigma); 
    F = reshape(F,length(x2),length(x1)); 
end 

F1 = generate2dGauss([1 1], [.25 .3; .3 1]); 
F2 = generate2dGauss([-1 -1], [.1 .1; .1 1]); 

मैं अपने उदाहरण के रूप में subplots के साथ उन्हें प्लॉट कर सकते हैं,

figure; 
subplot(1,2,1); 
title('Atom 1'); 
imagesc(F1); 

subplot(1,2,2); 
title('Atom 2'); 
imagesc(F2); 

Two subplots with a gaussian distribution in each

या मैं दो ग्रिड के प्रति तत्व अधिकतम प्लॉट कर सकते हैं।

figure; 
title('Both Atoms'); 
imagesc(max(F1, F2)); 

The per element maximum of the two gaussian distributions

तुम भी तत्व के लिहाज से इसका मतलब है, रकम, आदि के साथ प्रयोग कर सकते हैं, लेकिन उदाहरण आप दे के आधार पर, मुझे लगता है कि अधिक से अधिक आप साफ देख परिणाम दे देंगे।

संभव पेशेवरों और विभिन्न कार्यों की विपक्ष:

  1. अधिकतम सबसे अच्छा काम करेंगे अपने परमाणुओं हमेशा शून्य मान पृष्ठभूमि और कोई नकारात्मक मूल्यों है। यदि पृष्ठभूमि शून्य-मूल्यवान है, लेकिन परमाणुओं में नकारात्मक मान भी होते हैं, तो नकारात्मक मान अन्य परमाणुओं की पृष्ठभूमि द्वारा कवर किए जा सकते हैं। यदि आपका परमाणु ओवरलैप है, तो उच्च मूल्य निश्चित रूप से हावी होगा।
  2. मीन अपने चोटियों कम उच्च कर देगा, लेकिन अधिक सहज ज्ञान युक्त हो सकता है जहाँ आप परमाणुओं के बीच ओवरलैप है।
  3. योग ओवरलैप होने वाले क्षेत्रों बड़ा मूल्यवान कर देगा।
  4. आप गैर शून्य पृष्ठभूमि है, तो आप भी तार्किक अनुक्रमण का उपयोग कर की कोशिश कर सकते। ओवरलैपिंग क्षेत्रों में क्या करना है इसके बारे में आपको कुछ निर्णय लेना होगा, लेकिन इससे पृष्ठभूमि को फ़िल्टर करना आसान हो जाएगा।
+0

धन्यवाद, तत्व-वार अधिकतम कार्य अच्छी तरह से काम करता है अगर मैं रंग सीमा निर्धारित करता हूं जो नकारात्मक मानों को शून्य पर मैप करता है। क्या आपको पता है कि मैं अपने अपडेट के ऊपरी बाएं और निचले दाएं पैनलों में देखे गए प्लॉट के बोर्डर्स पर परमाणुओं के "निचोड़" प्रदर्शन को कैसे रोक सकता हूं? – imant

+0

मुझे खेद है कि मुझे "निचोड़" परमाणुओं के बारे में सलाह देने के लिए गैबर परमाणुओं के बारे में पर्याप्त जानकारी नहीं है। मुझे कल्पना है कि * ए *, * बी *, * जी * पैरामीटर के कुछ मूल्यों के लिए, [गैबर फ़ंक्शन] (https://en.wikipedia.org/wiki/Gabor_atom) बस इस व्यवहार को दिखाता है। – Cecilia

+0

चूंकि आपने मुझे मैटलैब में विज़ुअलाइज़ेशन के साथ महत्वपूर्ण रूप से मदद की है, इसलिए मैं आपका जवाब स्वीकार करता हूं, जो मेरे प्रश्न के अपडेट के साथ, मेरी समस्या लगभग पूरी तरह से हल करता है। एक बार फिर धन्यवाद। – imant

-2

प्रश्न। मैं व्यक्तिगत दृश्यों के प्लॉट को एक विज़ुअलाइज़ेशन में कैसे जोड़ सकता हूं?

ए एकाधिक प्लॉट खींचने के लिए सबप्लॉट का उपयोग करें, एक आकृति में 2 से 2 भूखंडों के साथ नमूना नीचे खोजें। कोड में अपने समीकरण बदले

x = linspace(-5,5); 
y1 = sin(x); 
subplot(2,2,1) 
plot(x,y1) 
title('First subplot') 

y2 = sin(2*x); 
subplot(2,2,2) 
plot(x,y2) 
title('Second subplot') 

y3 = sin(4*x); 
subplot(2,2,3) 
plot(x,y3) 
title('Third subplot') 

y4 = sin(6*x); 
subplot(2,2,4) 
plot(x,y4) 
title('Fourth subplot') 
+0

यदि आप बारीकी से देखते हैं तो आप देखते हैं कि मैंने पहले ही ऐसा किया है। इसके बजाय, मैं एक उदाहरण में सभी परमाणुओं को एक साजिश में दिखाना चाहता हूं। – imant

+0

आप 'होल्ड ऑन' का उपयोग कर सकते हैं फिर एक ही आंकड़े में सभी चार भूखंडों को आकर्षित कर सकते हैं। 'पकड़ो' पिछले साजिश रखेंगे। एक बार सभी को 'होल्ड ऑफ' का उपयोग करने के लिए प्लॉट किया जाता है। ट्विन साइन वेव उदाहरण [यहां] (https://in.mathworks.com/help/matlab/ref/hold.html?requestedDomain=www.mathworks.com) – SACn

+1

दुर्भाग्य से यह नहीं है कि imagesc भूखंडों मुझे लगता है के साथ आसान है। – imant