अपने नमूनों से एक तरंग के पीडीएफ की गणना


27

कुछ समय पहले मैं डिजिटल तरंगों को आकर्षित करने के लिए अलग-अलग तरीकों की कोशिश कर रहा था , और मैंने जो कुछ भी कोशिश की थी, वह आयाम के लिफाफे के मानक सिल्हूट के बजाय, इसे एक आस्टसीलस्कप की तरह अधिक प्रदर्शित करने के लिए था। यह एक साइन और स्क्वैयर वेव एक स्कोप पर कैसा दिखता है:

यहाँ छवि विवरण दर्ज करें

ऐसा करने का भोला तरीका है:

  1. आउटपुट छवि में ऑडियो फ़ाइल को एक पिक्सेल प्रति क्षैतिज पिक्सेल में विभाजित करें
  2. प्रत्येक हिस्सा के लिए नमूना आयाम के हिस्टोग्राम की गणना करें
  3. पिस्टन के एक स्तंभ के रूप में चमक द्वारा हिस्टोग्राम प्लॉट करें

यह कुछ इस तरह का उत्पादन करता है: यहाँ छवि विवरण दर्ज करें

यह ठीक काम करता है अगर प्रति नमूने बहुत सारे हैं और सिग्नल की आवृत्ति नमूना आवृत्ति से असंबंधित है, लेकिन अन्यथा नहीं। यदि संकेत आवृत्ति नमूने की आवृत्ति का एक सटीक उप-निर्माता है, उदाहरण के लिए, नमूने हमेशा प्रत्येक चक्र में बिल्कुल समान आयाम पर होंगे और हिस्टोग्राम सिर्फ कुछ बिंदु होंगे, भले ही वास्तविक पुनर्निर्माण संकेत इन बिंदुओं पर मौजूद हो। यह साइन पल्स ऊपर के बाएं के समान चिकनी होनी चाहिए, लेकिन ऐसा नहीं है क्योंकि यह बिल्कुल 1 kHz है और नमूने हमेशा एक जैसे होते हैं:

यहाँ छवि विवरण दर्ज करें

मैंने अंकों की संख्या बढ़ाने की कोशिश की, लेकिन यह समस्या का समाधान नहीं करता है, बस कुछ मामलों में आसान चीजों की मदद करता है।

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

पाप का x (x):एक्सarcsinएक्स=11-एक्स2

लेकिन मुझे नहीं पता कि यह लहरों के लिए कैसे गणना की जाए, जहां उलटा एक बहु-मूल्यवान फ़ंक्शन है , या इसे तेज़ी से कैसे करना है। इसे शाखाओं में विभाजित करें और प्रत्येक के व्युत्क्रम की गणना करें, डेरिवेटिव लें, और उन सभी को एक साथ जोड़ दें? लेकिन यह बहुत जटिल है और शायद एक सरल तरीका है।

यह "प्रक्षेपित डेटा का पीडीएफ" एक प्रयास के लिए भी लागू होता है जो मैंने जीपीएस ट्रैक के कर्नेल घनत्व अनुमान लगाने के लिए किया था। इसे रिंग के आकार का होना चाहिए था, लेकिन क्योंकि यह केवल नमूनों को देख रहा था और नमूनों के बीच प्रक्षेपित बिंदुओं पर विचार नहीं कर रहा था, केडीई एक अंगूठी की तुलना में कूबड़ की तरह अधिक दिखता था। अगर नमूने हम सभी जानते हैं, तो यह सबसे अच्छा हम कर सकते हैं। लेकिन नमूने हम सभी नहीं जानते हैं। हम यह भी जानते हैं कि नमूनों के बीच एक रास्ता है। GPS के लिए, कोई सही Nyquist पुनर्निर्माण नहीं है जैसे कि बैंडलेड ऑडियो के लिए है, लेकिन मूल विचार अभी भी लागू होता है, प्रक्षेप समारोह में कुछ अनुमान के साथ।


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

क्या आप उस तरह के प्लॉट को खींचने के तरीकों में अधिक रुचि रखते हैं, या क्या पीडीएफ की गणना के बारे में सवाल के लिए प्लॉट सिर्फ प्रेरणा है?
datageist

@ योदा: ठीक है, साइन लहर के लिए ऊपर का फ़ंक्शन केवल आधा चक्र लेने, अकशेरुकी और व्युत्पन्न लेने के द्वारा पाया जाता है, क्योंकि प्रत्येक आधे चक्र में अगले के समान पीडीएफ होता है। लेकिन पूरे मनमाने ऑडियो सिग्नल के लिए मूल्य प्राप्त करने के लिए, आप यह अनुमान नहीं लगा सकते। मुझे लगता है कि आपको इसे "शाखा कटौती" में विभाजित करने की आवश्यकता होगी, प्रत्येक के पीडीएफ को बारी-बारी से लें, और उन सभी को एक साथ जोड़ दें?
21

@ डिटैजिस्ट: हम्म। मैं तरीके साजिश उस तरह आकर्षित करने के लिए में रुचि रही है, लेकिन भूखंड उस तरह का है पीडीएफ। एक शॉर्टकट जो समान या बहुत समान परिणाम उत्पन्न करता है वह ठीक है।
21

@endolith, ओह, हाँ, मैं समझता हूँ। वास्तव में जोर देने के बारे में एक सवाल (यानी किस प्रकार के शॉर्टकट उचित हैं)।
datageist

जवाबों:


7

मूल दर (उदाहरण 8x ओवरसम्पल्ड) के लिए कई बार इंटरपोलेट करें। यह आपको एक टुकड़े-टुकड़े रैखिक संकेत मानने की अनुमति देता है। इस सिग्नल में अनंत रिज़ॉल्यूशन, निरंतर पाप (x) / तरंग के x प्रक्षेप की तुलना में बहुत कम त्रुटि होगी।

मान लें कि ओवरस्म्प्लेटेड वैल्यूज़ की हर जोड़ी में एक वैल्यू से लेकर अगले तक की एक सतत लाइन होती है। के बीच सभी मानों का उपयोग करें । यह आपको एक पतली क्षैतिज स्लाइस देता है y1 से y2 तक एक मनमाना रिज़ॉल्यूशन पीडीएफ में संचित किया जाता है। प्रायिकता का प्रत्येक आयताकार टुकड़ा 1 / nsamples क्षेत्र में बढ़ाया जाना चाहिए।

नमूने के बजाय नमूनों के बीच की रेखा का उपयोग करना स्वयं "स्पाइकी" पीडीएफ को रोकता है, यहां तक ​​कि इस मामले में भी जब नमूना अवधि और तरंग के बीच एक मूल संबंध होता है।


मैंने रैखिक रूप से प्रक्षेपित हिस्टोग्राम के लिए एक फ़ंक्शन लिखा है, लेकिन यह डॉगी है। क्या आपको इसके लिए मौजूदा कोड का पता है?
एंडोलिथ

रेखीय प्रक्षेप अधिकांश तरंगों के लिए एक बड़ा अंतर बनाता है, यहां तक ​​कि ओवरसैंपलिंग के बिना भी। 1 kHz साइन अब ज्यादातर 997 Hz साइन जैसा दिखता है। नमूना मूल्यों पर सिर्फ क्षैतिज रेखाओं के बजाय, यह अब उनके बीच रंग का क्षैतिज बैंड है। ओवरसैंपलिंग के साथ, बैंड को भी स्मूथ किया जाता है। एफएफटी रेज़मैपलिंग और आसन्न विखंडू के साथ कुछ ओवरलैप के साथ मैं इसे वास्तविक प्रतिच्छेदन चोटियों को हिट करने में सक्षम होना चाहिए। मुझे अपना प्रक्षेपित हिस्टोग्राम कोड तेजी से बनाने की आवश्यकता है, हालांकि ...
एंडोलिथ

मैंने इसके लिए अपनी स्क्रिप्ट को पूरी तरह से फिर से लिखा है, और मुझे लगता है कि मुझे इस बार हिस्टोग्राम और एंटीएलियासिंग मिला है: gist.github.com/endolith/652d3ba1a68b629ed328
endolotion

नवीनतम संस्करण github.com/endolith/scopeplot
endolith

7

जो मैं जाना चाहता हूं वह अनिवार्य रूप से जेसन आर का "रैंडम रेज़मप्लेयर" है, जो बदले में योडा के स्टोचैस्टिक नमूने का एक निर्धारित-संकेत आधारित कार्यान्वयन है।

मैंने प्रत्येक दो नमूनों के बीच एक यादृच्छिक बिंदु पर सरल घन प्रक्षेप का उपयोग किया है। एक आदिम संश्लेषित ध्वनि के लिए (एक संतृप्त गैर-बैंडलेड स्क्वायर-सिग्नल की तरह + यहां तक ​​कि हार्मोनिक्स से साइन तक का क्षय) यह इस तरह दिखता है:

रैंडम-resampled सिंथेस पीडीएफ

आइए इसकी तुलना एक उच्च-नमूना संस्करण से करते हैं,

यहाँ छवि विवरण दर्ज करें

और एक ही समान के साथ अजीब लेकिन कोई प्रक्षेप नहीं।

यहाँ छवि विवरण दर्ज करें

इस पद्धति का उल्लेखनीय विरूपण साक्ष्य वर्ग-जैसे डोमेन में ओवरशूट है, लेकिन यह वास्तव में sinc- फिल्टर्ड सिग्नल की पीडीएफ है (जैसा कि मैंने कहा, मेरा सिग्नल बैंडलीड नहीं है) भी ऐसा लगेगा और कथित जोर का प्रतिनिधित्व करता है चोटियों की तुलना में, अगर यह एक ऑडियो सिग्नल था।

कोड (हास्केल):

cubInterpolate vll vl v vr vrr vrrr x
    = v*lSpline x + vr*rSpline x
      + ((vr-vl) - (vrr-vll)/4)*ldSpline x
      + ((vrr-v) - (vrrr-vl)/4)*rdSpline x
     where lSpline x = rSpline (1-x)
           rSpline x = x*x * (3-2*x)
           ldSpline x = x * (1 + x*(x-2))
           rdSpline x = -ldSpline (1-x)

                   --  rand list   IN samples  OUT samples
stochasticAntiAlias :: [Double] -> [Double] -> [Double]
stochasticAntiAlias rs (lsll:lsl:lsc:lsr:lsrr:[]) = []
stochasticAntiAlias (r:rLst) (lsll:lsl:lsc:lsr:lsrr:lsrrr:t)
    = ( cubInterpolate lsll lsl lsc lsr lsrr lsrrr r )
          : stochasticAntiAlias rLst (lsll:lsl:lsc:lsr:lsrr:lsrrr:t)

rand list [0,1] श्रेणी में यादृच्छिक चर की एक सूची है।


1
कमाल का दिखता है। हास्केल कोड के लिए +1।
datageist

हाँ, यह नमूना मूल्यों का निरीक्षण करना चाहिए । मैंने वास्तव में प्रत्येक पिक्सेल कॉलम के लिए एक पीक मान रखने की योजना बनाई है, जो कि संभवतः अलग-अलग तरह से खींचा गया है, जो अधिकतम प्रतिरूप चोटियों पर आधारित है और न केवल अधिकतम नमूनों के आधार पर। Flic.kr/p/7QAScX जैसे वेवफॉर्म बताते हैं कि यह क्यों जरूरी है।
एंडोलिथ

"उच्च-नमूना संस्करण" से क्या आपका मतलब है कि यह अप-अप है, लेकिन फिर भी समान रूप से नमूना है? और वह नीला डॉट्स है?
एंडोलिथ

1
@endolith यह केवल पहली जगह में एक उच्च नमूना दर में गणना की गई मूल तरंग है। अनिवार्य रूप से नीले बिंदुओं की तरह एक ध्वनि 192 kHz पर नमूना का प्रतिनिधित्व करती है, और सबसे नीचे वाले पीले 24 kHz के लिए एक भोले ढंग से किए गए downsample का प्रतिनिधित्व करते हैं। ऊपरी पीले बिंदु stochasticAntiAliasइस के हैं। लेकिन उच्च-नमूना संस्करण वास्तव में दोनों मामलों में एक समान दर है।
leftaroundabout

5

जबकि आपका दृष्टिकोण सैद्धांतिक रूप से सही है (और गैर-मोनोटोनिक कार्यों के लिए इसे थोड़ा संशोधित करने की आवश्यकता है), एक सामान्य फ़ंक्शन के व्युत्क्रम की गणना करना बेहद कठिन है। जैसा कि आप कहते हैं कि आपको शाखा बिंदुओं और शाखा कटौती से निपटना होगा, जो कि संभव है, लेकिन आप गंभीरता से नहीं चाहते हैं।

जैसा कि आप पहले ही उल्लेख कर चुके हैं, नियमित रूप से नमूने समान बिंदुओं का एक ही नमूना लेते हैं और जैसे कि उन क्षेत्रों में खराब अनुमानों के लिए अतिसंवेदनशील है जहां यह नमूना नहीं है (भले ही Nyquist मानदंड संतुष्ट हो)। इस मामले में, लंबी अवधि के लिए नमूना लेने से भी मदद नहीं मिलती है।

सामान्य तौर पर, जब संभावना घनत्व कार्यों और हिस्टोग्राम के साथ काम करते हैं, तो नियमित नमूनाकरण की तुलना में स्टोचैस्टिक नमूने के संदर्भ में सोचने के लिए इसका एक बेहतर विचार है (एक परिचय के लिए जुड़ा हुआ जवाब देखें)। स्टोकेस्टिक रूप से नमूना करके, आप यह सुनिश्चित कर सकते हैं कि हर बिंदु पर "हिट" होने की समान संभावना है और पीडीएफ का अनुमान लगाने का एक बेहतर तरीका है।

(एक्स)=पाप(20πएक्स)+पाप(100πएक्स)रों=1000एन=1001000 नमूने (वर्दी वितरण) प्रति सेकंड (मैं यहाँ हर्ट्ज का उपयोग नहीं कर रहा हूं, क्योंकि इसका मतलब है कि 30 सेकंड के लिए) एक अलग अर्थ देता है सही (एक ही बाइनिंग) पर भूखंड देता है।

आप आसानी से देख सकते हैं कि हालांकि यह शोर है, यह वास्तविक पीडीएफ की तुलना में बहुत बेहतर सन्निकटन है जो सही पर एक है जो कई अंतरालों में शून्य दिखाता है और कई अन्य में बड़ी त्रुटियां है। अधिक लंबे समय तक अवलोकन करने से, आप दाईं ओर एक में विचरण को नीचे ला सकते हैं, अंततः बड़ी टिप्पणियों की सीमा में सटीक पीडीएफ (धराशायी काली रेखा) में परिवर्तित हो सकते हैं।

यहाँ छवि विवरण दर्ज करें


1
"जेनेरिक फ़ंक्शन के व्युत्क्रम की गणना करना बहुत कठिन है" ठीक है, यह नमूनों की एक श्रृंखला के रूप में इतना अधिक फ़ंक्शन नहीं है, इसलिए व्युत्क्रम को खोजने के लिए नमूने के x और y निर्देशांक की अदला-बदली की जाती है और फिर फिट करने के लिए फिर से खोला जाता है। नई समन्वय प्रणाली। मैं वैसे भी सैंपलिंग नहीं बदल सकता। हम पहले से मौजूद डेटा के बारे में बात कर रहे हैं जो समान नमूने का उपयोग करके बनाया गया है।
एंडोलिथ

4

कर्नेल घनत्व अनुमान

एक तरंग के पीडीएफ का अनुमान लगाने का एक तरीका कर्नेल घनत्व अनुमानक का उपयोग करना है ।

एक्स(n)कश्मीर(एक्स)δ(एक्स-एक्स(n))पी^

पी^(एक्स)=Σn=0एनकश्मीर(एक्स-एक्स(n))

अद्यतन: दिलचस्प अतिरिक्त जानकारी।

एक्स(n)n=0,1,,एन-1एक्स(कश्मीर)

एक्स(कश्मीर)=Σn=0एन-1एक्स(n)-ȷ2πnकश्मीर/एन

एक्स(कश्मीर)ȷ2πnकश्मीर/एन

एक्स(n)=1एनΣकश्मीर=0एन-1एक्स(कश्मीर)ȷ2πnकश्मीर/एन

तो एक अनुमान है कि आप क्या कर रहे हैं एक साथ सभी फूरियर घटक के सभी PDF को हल करने के लिए:

|एक्स(कश्मीर)|11-एक्स2

एक्स(कश्मीर)एक्स(n)

अधिक सोचा की आवश्यकता है, हालांकि!


मैंने ऐसा सोचा था, लेकिन एक अज्ञात संभावना घनत्व फ़ंक्शन के आकलन के लिए घनत्व अनुमान का उपयोग किया जाता है। Nyquist नमूना प्रमेय के कारण, संपूर्ण तरंग ज्ञात है, वास्तव में, और सटीक संभावना घनत्व फ़ंक्शन को भी जानना चाहिए। यदि यह गति बनाम सटीकता व्यापार-बंद है, तो मैं अनुमान के साथ ठीक हूं, लेकिन वास्तविक पीडीएफ को इससे बाहर निकालने का एक तरीका होना चाहिए। जैसे, प्रत्येक नमूने पर एक सिनैस फंक्शन डालकर एक पुनर्निर्मित तरंग बनाया जा सकता है और उन्हें एक साथ जोड़ दिया जा सकता है। एक पीडीएफ फ़ंक्शन का उपयोग कर्नेल के रूप में करके पीडीएफ बनाया जा सकता है? मुझे नहीं लगता कि यह उस तरह काम करता है।
एंडोलिथ

जैसे, मुझे नहीं लगता कि यह समस्या को हल करता है जहां सिग्नल के नमूने नमूना आवृत्ति के एक उप-निर्माता हैं। यह नमूनों के बीच पुनर्निर्मित तरंग को ध्यान में नहीं रखता है, क्या यह करता है? यह सिर्फ पीडीएफ में प्रत्येक बिंदु को अंतराल में भरने की कोशिश करने के लिए दोष देता है। मेरे पास जीपीएस ट्रेस के कर्नेल घनत्व आकलन करने की कोशिश करने के साथ एक समान मुद्दा था, क्योंकि यह नमूनों के बीच के मूल्यों को ध्यान में नहीं रखता है।
एंडोलिथ

4

जैसा कि आपने अपनी एक टिप्पणी में संकेत किया है, यह आकर्षक होगा कि केवल सैंपल और sinc फ़ंक्शन के पीडीएफ का उपयोग करके पुन: निर्मित सिग्नल के हिस्टोग्राम की गणना की जाए जो कि बैंडलेड सिग्नल को प्रक्षेपित करता है। दुर्भाग्य से, मुझे नहीं लगता कि यह संभव है क्योंकि sinc के हिस्टोग्राम में वह सारी जानकारी नहीं है जो सिग्नल के पास है; समय-क्षेत्र की स्थिति के बारे में सभी जानकारी जहां प्रत्येक मूल्य का सामना करना पड़ता है, खो जाता है। यह मॉडल को असंभव बनाता है कि कैसे sinc के स्केल और समय-विलंबित संस्करणों को एक साथ जोड़ दिया जाएगा, जो कि आप वास्तव में बिना किए सिग्नल के "निरंतर" या अप-सैंपल संस्करण के हिस्टोग्राम की गणना करना चाहते हैं। ऊपर से नमूना।

मुझे लगता है कि आप सबसे अच्छे विकल्प के रूप में प्रक्षेप के साथ रह गए हैं। आपने कुछ मुद्दों का संकेत दिया था जो आपको ऐसा करने से रोकते थे, जो मुझे लगता है कि संबोधित किया जा सकता है:

  • कम्प्यूटेशनल व्यय: यह निश्चित रूप से एक विशिष्ट चिंता का विषय है, जो उस विशिष्ट अनुप्रयोग पर निर्भर करता है जिसे आप इसके लिए उपयोग करना चाहते हैं। आपके द्वारा एकत्र किए गए रेंडरिंग की गैलरी में पोस्ट किए गए लिंक के आधार पर, मैं मान रहा हूं कि आप ऑडियो संकेतों के विज़ुअलाइज़ेशन के लिए ऐसा करना चाहते हैं। चाहे आप एक वास्तविक समय या ऑफ़लाइन आवेदन के लिए इसमें रुचि रखते हों, मैं आपको एक कुशल प्रक्षेपक को प्रोटोटाइप के लिए प्रोत्साहित करूंगा और देखूंगा कि क्या यह वास्तव में बहुत महंगा है। पॉलीफ़ेज़ रेज़ामापलिंग ऐसा करने का एक अच्छा तरीका है जो लचीला है (आप किसी भी तर्कसंगत कारक का उपयोग कर सकते हैं)।

  • π


लेकिन क्या होगा अगर वेवफॉर्म 44.1 / form kHz पर है? :) यह अच्छी सलाह है, यद्यपि। क्या रैंडम रेज़म्पलिंग जैसी कोई चीज़ है? या वास्तव में, मुझे लगता है कि पूरी तरह से गैर-समान रूप से फिर से काम करने के लिए क्या होगा, जैसे कि नए नमूने एक्स आयाम में समान रूप से दूरी पर होने के बजाय, y आयाम में डिब्बे में पूरी तरह से फिट होते हैं। यकीन नहीं होता अगर ऐसा करने का कोई तरीका है
एंडोलिथ

2
आप आसानी से एक "बेतरतीब" resampler लागू कर सकते हैं एक Farrow संरचना का उपयोग कर। यह एक योजना है जो बहुपद (अक्सर क्यूबिक) का उपयोग करके प्रक्षेपित मनमाने अंश-नमूना विलंब के लिए अनुमति देती है। आप एक एनसीओ में उपयोग किए जाने वाले इंटर-सैंपल चरण संचायक को बनाए रख सकते हैं , जो कि प्रत्येक आउटपुट (resampled) नमूने के लिए एक नमूना अंतराल के छद्म आयामी फ्रैक्चर द्वारा बढ़ाया जाता है। संचायक के मूल्य का उपयोग फैरो इंटरपोलर के इनपुट के रूप में किया जाता है, प्रत्येक आउटपुट के लिए आंशिक देरी की मात्रा को परिभाषित करता है।
जेसन आर

हम्म, स्पष्ट करने के लिए, फैरो नियमित पुराने बहुपद प्रक्षेप का सिर्फ एक प्रोसेसर / मेमोरी अनुकूलित संस्करण है?
20

1
हाँ। यह बहुपद-आधारित मनमाना आंशिक विलंब को लागू करने के लिए एक कुशल संरचना है।
जेसन आर

घन प्रक्षेप केवल एक सन्निकटन है, हालांकि। मैं सही चौराहों वाली चोटियों को जानना चाहता हूं, और यह चरम चोटियों पर अच्छी तरह से काम नहीं करता है: stackoverflow.com/questions/1851384/… वास्तव में, ऐसा लगता है कि एक अनंत श्रृंखला के साथ एक अनन्त श्रृंखला जैसे [..., -1, - 1, -1, 1, 1, -1, 1, -1, ...] एक अनंत चौराहे की चोटी का उत्पादन करेगा, हालांकि, मुझे यकीन नहीं है कि यह व्यवहार में कितना मायने रखेगा।
एंडोलिथ

0

आपको हिस्टोग्राम को चिकना करने की आवश्यकता है (यह कर्नेल विधि का उपयोग करने के समान परिणाम देगा)। सटीक रूप से किस तरह से स्मूथिंग का प्रदर्शन किया जाना चाहिए। शायद यह प्रक्षेप द्वारा भी किया जा सकता है। चौरसाई के अलावा मेरा मानना ​​है कि आप अपने बेहतर परिणाम प्राप्त करेंगे यदि आप अपने तरंग को इस तरह से बढ़ाते हैं कि नमूना आवृत्ति आपके इनपुट में उच्चतम आवृत्ति की तुलना में 'काफी अधिक' है। यह 'मुश्किल' मामले में मदद करनी चाहिए, जहां साइन की तरंग नमूनाकरण आवृत्ति से इस तरह से संबंधित होती है कि हिस्टोग्राम में केवल कुछ डिब्बे आबाद हो जाते हैं। यदि चरम पर ले जाया जाए तो पर्याप्त उच्च नमूना दर आपको बिना चिकनाई के अच्छे भूखंड दे सकती है। इसलिए कुछ प्रकार के चौरसाई के साथ संयुक्त उत्थान बेहतर भूखंडों का उत्पादन करना चाहिए।

आप 1kHz टोन का एक उदाहरण देते हैं, जहां प्लॉट वैसा नहीं है जैसा आप उम्मीद करते हैं। यहाँ मेरा प्रस्ताव है (मतलाब / सप्तक कोड)

pixels_vertical = 100;
% This needs to be tuned to your configuration and acceptance
upsampling_factor = 16*(pixels_vertical/100); 
fs_original = 48000;
fsine = 1000; % in Hz
fs_up = upsampling_factor*fs_original;
duration = 1; % in seconds
x = sin(2*pi*fsine*[0:duration*fs_up]/fs_up);
period_in_samples = fs_up/fsine;
hist_points = linspace(-1,1,pixels_vertical);
istart = 1;
iend   = period_in_samples;
pixel_values = hist(x(istart:iend), hist_points);
% smooth pixel values
[b,a] = butter(2,0.2);
pixel_values_smooth = filtfilt(b,a,pixel_values);
figure;hold on;
plot(hist_points, pixel_values);
plot(hist_points, pixel_values_smooth,'r');

अपने 1000Hz टोन के लिए आपको यह मिलता है यहाँ छवि विवरण दर्ज करें

अपनी प्राथमिकता के लिए upsampling_factor अभिव्यक्ति को ट्यून करने के लिए आपको क्या करने की आवश्यकता है।

अभी भी 100% निश्चित नहीं है कि आपकी आवश्यकताएं क्या हैं। लेकिन अपसंस्कृति और चौरसाई के उपरोक्त सिद्धांत का उपयोग करके आपको यह 1kHz टोन (मैटलैब के साथ बनाया गया) के लिए मिलेगा। ध्यान दें कि कच्चे हिस्टोग्राम में शून्य हिट के साथ कई डिब्बे होते हैं।

यहाँ छवि विवरण दर्ज करें


हाँ, यह वास्तव में एल्गोरिथ्म के हिस्से के रूप में कुछ प्रकार के प्रक्षेप की आवश्यकता है। हिस्टोग्राम को चिकना करना केवल ऐसा नहीं करेगा, क्योंकि हिस्टोग्राम असतत बिंदुओं का है, न कि पुनर्निर्मित तरंग। काम करने का एकमात्र तरीका यह है कि अगर मैं उस बिंदु पर करूं, जहां ऊर्ध्वाधर पिक्सल की तुलना में कई अधिक नमूने हैं, लेकिन यह एक भारी जानवर बल विधि है जिसमें लंबा समय लगता है।
एंडोलिथ

या आउटपुट पर
इंटरपोलिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.