2013-01-15 18 views
5

मैं एक ऐसी परियोजना पर काम कर रहा हूं जिसमें एक लहर फ़ाइल के साथ समय के साथ पिच/आवृत्ति में परिवर्तनों को देखना शामिल है (मैं MATLAB के लिए नया हूं, लेकिन प्रोग्रामिंग के लिए नहीं) । मैं समय-आयाम ग्राफ और आवृत्ति-आयाम (एक एफएफटी के बाद) ग्राफ को देखने में सक्षम हूं, लेकिन मैं आवृत्ति को अलग करने में सक्षम हूं और समय पर प्रत्येक बिंदु पर इसे कैसे दिखा सकता हूं?MATLAB - .wav फ़ाइल का प्लॉट समय-आवृत्ति ग्राफ

कोड:

filename = '/Users/Username/Sample_1.wav' 

[y, fs] = wavread(filename); 
y = y(:,1); 
dt = 1/fs; 
t = 0:dt:(length(y)*dt)-dt; 
plot(t,y); xlabel('Seconds'); ylabel('Amplitude'); 

transformed = fft(y); 
mag = abs(transformed); 
plot(mag); 
+2

आप कहते हैं, "मैं आवृत्ति को अलग करने और समय पर प्रत्येक बिंदु पर इसे दिखाने में सक्षम कैसे होगा?" जहां तक ​​यह जाता है, इसके कुछ अच्छे जवाब हैं, लेकिन यह जानना महत्वपूर्ण है कि ऐसी भावना में तत्काल आवृत्ति जैसी कोई चीज नहीं है जिसे आप चाहते हैं। दूसरे शब्दों में, कोई आवृत्ति मान नहीं है जो विशिष्ट रूप से समय पर प्रत्येक बिंदु से मेल खाता है (या, कम से कम, आप उस जानकारी को समय-डोमेन डेटा से प्राप्त नहीं कर सकते हैं। यदि आप कर सकते हैं, तो आप हेज़ेनबर्ग अनिश्चितता सिद्धांत का उल्लंघन करेंगे) । –

उत्तर

7

आप सिग्नल प्रोसेसिंग उपकरण बॉक्स है, तो आप spectrogram समारोह उपयोगी मिल सकता है।

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

यह अनिवार्य रूप से short-time Fourier transform (STFT) है।

+0

जोड़ने के लिए .. आप (ओपी) क्या करने की कोशिश कर रहे हैं समय-आवृत्ति विश्लेषण के क्षेत्र में आता है। यदि आप रुचि रखते हैं, तो शॉर्ट टर्म फूरियर ट्रांसफॉर्म (MATLAB 'स्पेक्ट्रोग्राम 'फ़ंक्शन का उपयोग करने आदि) जैसी तकनीकों का उपयोग करने पर बहुत से लेख लिखे गए हैं। यह एक मजेदार विषय है! – notthetup

+0

आपकी मदद के लिए धन्यवाद! मैं वास्तव में एक रेखा ग्राफ की रेखाओं के साथ कुछ और खोज रहा था, लेकिन मुझे लगता है कि स्पेक्ट्रोग्राम पढ़ने के लिए सीख सकते हैं। – airplaneman19

+0

@ airplaneman19: खुशी है कि मैं मदद कर सकता हूं। लेकिन उपरोक्त Bjorn की टिप्पणी पर ध्यान दें। –

0

यदि आपके पास सिग्नल प्रोसेसिंग टूलबॉक्स है, तो स्पेक्ट्रोग्राम जाने का तरीका है (जैसा ओली चार्ल्सवर्थ ने उल्लेख किया है)।

यदि आपके पास यह नहीं है, तो MATLAB सेंट्रल फ़ाइल एक्सचेंज हमेशा सामान्य चीज़ों को देखने के लिए एक अच्छी जगह है।

http://www.mathworks.com/matlabcentral/fileexchange/1553-spectrogram-short-time-ft-log-magnitude

यह spectrogram कार्यशीलता का एक समझदार और अच्छी तरह से काम कर रहा कार्यान्वयन हो रहा है।

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