मुझे बाइट की सरणी के रूप में संग्रहीत (vb में) नमूना की आवृत्ति को खोजने की आवश्यकता है। नमूना एक साइन लहर है, ज्ञात आवृत्ति है, इसलिए मैं जांच सकता हूं), लेकिन संख्याएं थोड़ा अजीब हैं, और मेरे गणित-फू कमजोर हैं। मूल्यों की पूरी श्रृंखला 0-255। 99% संख्याएं 235 से 245 तक हैं, लेकिन कुछ आउटलाइजर्स 0 और 1 तक नीचे हैं, और शेष 1% में 255 तक हैं। आउटलेटर्स को हटाने के लिए मैं इसे सामान्य कैसे कर सकता हूं, (235-245 अंतराल की गणना करना क्योंकि यह विभिन्न नमूनों के साथ बदल सकता है), और आवृत्ति प्राप्त करने के लिए मैं शून्य-क्रॉसिंग की गणना कैसे करूं? क्षमा करें अगर यह विवरण बकवास है!ध्वनि नमूना (संख्याओं की सरणी के रूप में) का गणितीय विश्लेषण
उत्तर
FFT शायद सबसे अच्छा जवाब है, लेकिन अगर आप वास्तव में अपने विधि द्वारा यह करना चाहते हैं, इस प्रयास करें:
को सामान्य करने के लिए, पहले एक हिस्टोग्राम बनाने गिनती करने के लिए कितने 0 से 255 से प्रत्येक मान के occurrances । तब की तरह कुछ के साथ एक छोर से मूल्यों का एक्स प्रतिशत बाहर फेंक:
for (i=lower=0;i< N*(X/100); lower++)
i+=count[lower];
//repeat in other direction for upper
अब
A[i] = 255*(A[i]-lower)/(upper-lower)-128
साथ सामान्य दूर -128..127 सीमा के बाहर परिणाम फेंक।
अब आप शून्य क्रॉसिंग गिन सकते हैं। यह सुनिश्चित करने के लिए कि आप शोर से मूर्ख नहीं हैं, आप पिछले कई बिंदुओं पर ढलान का ट्रैक रखना चाहेंगे, और औसत ढलान सही तरीके से चलने पर केवल क्रॉसिंग की गणना कर सकते हैं।
उपयोग फूरियर को बदलने, यह बहुत अधिक शोर असंवेदनशील है शून्य क्रॉसिंग
गिनतीसंपादित से: @WaveyDavey
मैं एक एफ # पुस्तकालय पाया एक FFT करने के लिए: From here
यह बदल जाता है बाहर, सबसे अच्छा मुफ्त कार्यान्वयन जो मैंने F # उपयोगकर्ताओं के लिए अभी तक पाया है अब भी शानदार FFTW लाइब्रेरी है। उनकी साइट पर प्रीकंपिल्ड विंडोज डीएलएल है। मैंने न्यूनतम बाइंडिंग्स लिखी हैं जो एफ #, से FFTW तक थ्रेड-सुरक्षित पहुंच दोनों गुरु और सरल इंटरफेस के साथ अनुमति देते हैं। प्रदर्शन उत्कृष्ट है, 32-बिट विंडोज एक्सपी प्रो केवल 64% बिट लिनक्स से 35% धीमा है।
अब मुझे यकीन है कि आप VB.net, सी # आदि, कि हमला करने के लिए इस समस्या को डेटा के एक ब्लॉक पर विचार करना है उनके डॉक्स
बाइट की सरणी से वीबी में डीएफटी/एफएफटी करने के लिए नोब के लिए कोई पॉइंटर्स? –
यदि दस्तावेज़ स्पष्ट नहीं हैं तो मैं सिर्फ एक प्रश्न पूछता हूं .net, "वीबी से एफ # lib कैसे कॉल करें?" – Purfideas
मानक विधि में होना चाहिए से एफ # lib कॉल कर सकते हैं कर रहा हूँ, उम्मीद है कि कम से कम दो बार वास्तविक आवृत्ति (अधिक डेटा लेना बुरा नहीं है, इसलिए थोड़ा अधिक अनुमान लगाना अच्छा होता है), फिर FFT लें और अनुमान लगाएं कि आवृत्ति परिणामी एफएफटी स्पेक्ट्रम में सबसे बड़ी संख्या से मेल खाती है।
वैसे, बहुत ही समान समस्याएं पहले यहां पूछी गई हैं - आप उन उत्तरों को भी खोज सकते हैं।
मैं "मूल एफएफटी" के लिए googled। Visual Basic FFT आपका प्रश्न एफएफटी चिल्लाता है, लेकिन एफएफटी का उपयोग करके सावधान रहें, डीएसपी के बारे में थोड़ा सा समझने के परिणाम भी उन परिणामों का नेतृत्व कर सकते हैं जिन्हें आप समझ में नहीं आते हैं या नहीं जानते कि वे कहां से आते हैं।
यदि मैं आपके विवरण से अच्छी तरह से समझ गया, तो आपके पास एक सिग्नल है जो एक साइन के साथ एक स्थिर प्लस कुछ यादृच्छिक glitches है। कहें,
x[n] = A*sin(f*n + phi) + B + N[n]
जहां एन [एन] "गड़बड़" शोर है जिसे आप छुटकारा पाने के लिए चाहते हैं।
यदि ग्लिच एक-नमूना लंबा हैं, तो आप उन्हें एक औसत फ़िल्टर का उपयोग करके हटा सकते हैं जो गड़बड़ की लंबाई से बड़ा होना चाहिए। गड़बड़ी के दोनों तरफ। लंबाई 1 के ग्लिच, मतलब है कि आपके पास लंबाई के 3 नमूने के औसत के साथ पर्याप्त होगा।
y[n] = median3(x[n])
मंझला तो गणना की जाती है: एक्स आप फ़िल्टर करना चाहते के नमूने ले लो (एक्स [एन 1], एक्स [n], एक्स [n + 1]), उन्हें सॉर्ट, और अपने उत्पादन होता है बीच का।
अब शोर सिग्नल दूर है, निरंतर सिग्नल से छुटकारा पाएं। मैं समझता हूं कि बफर सीमित और ज्ञात लंबाई का है, इसलिए आप पूरे बफर के अर्थ की गणना कर सकते हैं। इसे सार
अब आपके एकल साइनस सिग्नल है। अब आप शून्य क्रॉसिंग की गणना करके मौलिक आवृत्ति की गणना कर सकते हैं। 0 से ऊपर के नमूने की मात्रा की गणना करें जिसमें पूर्व नमूना 0 से नीचे था। अवधि आपके बफर के नमूने की कुल मात्रा है, और आवृत्ति अवधि के oposite (1/x) है।
हालांकि मैं बहुमत के साथ जाऊंगा और कहूंगा कि ऐसा लगता है कि आप एक एफएफटी समाधान (एफएफटी एल्गोरिदम बहुत तेज़ है), अगर एफएफटी किसी भी कारण के लिए उत्तर नहीं है तो आप साइन वक्र को फिट करने का प्रयास कर सकते हैं एक फिटिंग कार्यक्रम का उपयोग कर डेटा और फिट आवृत्ति को पढ़ने के लिए।
Fityk का उपयोग करके, आप डेटा लोड कर सकते हैं, और a*sin(b*x-c)
पर फिट कर सकते हैं जहां 2*pi/b
आपको फिटिंग के बाद आवृत्ति देगा।
स्क्रिप्टिंग के लिए कमांड लाइन से Fityk का उपयोग गुई से किया जा सकता है और इसमें सी ++ एपीआई है ताकि इसे सीधे आपके प्रोग्राम में शामिल किया जा सके।
फ्रीक्वेंसी विश्लेषक http://www.relisoft.com/Freeware/index.htm पर प्राप्त करें और इसे चलाएं और कोड को देखें।
- 1. एक आईफोन ऐप में नमूना ध्वनि क्लिप की वैधता
- 2. ध्वनि नमूना पहचान पुस्तकालय/कोड
- 3. संख्याओं की श्रेणियों के साथ सरणी भरें
- 4. प्रिंट हेक्साडेसिमल संख्याओं के रूप में एक पूर्णांक सरणी
- 5. एंड्रॉइड में विश्लेषण और विज़ुअलाइजिंग फ्रीक्वेंसी के लिए ध्वनि कैप्चरिंग
- 6. सीएसएस मूल्य गणितीय अभिव्यक्ति के रूप में
- 7. Clojure/जावा: ध्वनि के स्पेक्ट्रम विश्लेषण के लिए जावा लाइब्रेरीज?
- 8. संख्याओं की सरणी में अधिकतम अंतर खोजने के लिए एल्गोरिदम
- 9. LINQ अनुक्रमिक संख्याओं की int सरणी बनाने के लिए
- 10. पृष्ठभूमि सेवा के रूप में ध्वनि पहचान
- 11. रोलिंग बॉल की ध्वनि
- 12. PHP - संख्याओं के साथ फ़ाइल नामों की एक सरणी सॉर्टिंग?
- 13. ध्वनि
- 14. पायथन: मैं स्ट्रिंग्स की सरणी को संख्याओं की सरणी में कैसे परिवर्तित करूं?
- 15. सी # में वास्तविक निम्न स्तर की ध्वनि उत्पादन?
- 16. युगल की एक सरणी का अकिमा इंटरपोलेशन
- 17. क्या आपको MySQL में तालिका नामों के रूप में संख्याओं का उपयोग करने की अनुमति है?
- 18. आप पीसीएम या डब्ल्यूएवी नमूना की मौलिक आवृत्ति का विश्लेषण कैसे करते हैं?
- 19. jQuery में JSON सरणी का विश्लेषण कैसे करें?
- 20. वीबी.Net- स्ट्रिंग में गणितीय अभिव्यक्ति का मूल्यांकन
- 21. नमूना स्थान आकार के साथ नमूना() का उपयोग = 1
- 22. सी ++ कोड में फिबोनाची संख्याओं की गणना
- 23. प्रोग्रामेटिक रूप से सीएसएस लेआउट का विश्लेषण
- 24. गणितीय सॉफ़्टवेयर
- 25. समय श्रृंखला विश्लेषण में रुझानों की समानता
- 26. एक्सेल वीबीए अवरोही क्रम में संख्याओं की सरणी को सॉर्ट करने का सबसे तेज़ तरीका?
- 27. योजना संख्याओं में # का अर्थ
- 28. डेटा संख्याओं के कॉलम नामों के रूप में आर संख्या
- 29. पंक्ति की संख्याओं
- 30. मैं श्रेणियों की सरणी के रूप में पूर्णांक की सरणी को सारांशित कैसे करूं?
बकवास नहीं। वास्तव में अच्छा सवाल है। – Purfideas
आप शीर्षक को "संख्याओं की सरणी के रूप में" बदलना चाहते हैं –