সাইন ওয়েভের এফএফটি ফলাফল কীভাবে চেক করবেন?


9

আমার এফএফটি অ্যালগরিদমের ইনপুট হিসাবে আমাকে একটি অডিও ফাইল (সাইন ওয়েভ) 1000Hz দেওয়া হয়েছে। আমি একটি অ্যারেতে 8192 পাওয়ার স্পেকট্রামের নমুনা পেয়েছি।

আমার আউটপুটটি সঠিক বা ভুল কিনা তা যাচাই করার সর্বোত্তম এবং সহজ উপায় কী?

আমি যদি নিঃশব্দ অডিও ফাইল দিই তবে সমস্ত নমুনার জন্য আউটপুট শূন্য। একটি সাইন ওয়েভ এ o / p 20 (0 তম নমুনা) থেকে 26059811 (743 তম নমুনা) থেকে বেড়ে ধীরে ধীরে 40 এ পরিণত হয়।

যদি আমি আউটপুট পরিসীমা সম্পর্কে ধারণা পাই তবে আমি এফএফটি কাজ করছে কিনা তা প্রযুক্তিগতভাবে প্রমাণ করতে পারি।

কোন ধারনা সহায়ক হবে।

পড়ুন এই লিঙ্কে কোনো প্রযুক্তিগত সন্দেহ জন্য।


1
আপনি কি আপনার অ্যারে প্লট করতে পারেন? (সম্ভবত একটি স্প্রেডশিট সফ্টওয়্যার?)

অ্যারেতে 8192 টি মান রয়েছে You আপনি নিজে নিজে প্লট করতে চান বা স্প্রেডশিট এটি পরিচালনা করবে I আমি ম্যাক

2
আমি এমএস এক্সেলে কয়েক হাজার হাজার নমুনা প্লট করেছি; Gnumeric বা অন্য কোনওটি উপযুক্ত। বা gnuplot।

ওপেন অফিসটি ভুলে যাবেন না
জাল নাম

@ ভুয়া নাম: আমি গ্রাফ প্লট করতে পারছি না ..

উত্তর:


4

8192 বা 8193 ফ্রিকোয়েন্সি (0 থেকে নাইকুইস্টের কাছে, তবে কিছু অ্যালগরিদম 8192 বিনে নাইকুইস্ট ফ্রিকোয়েন্সি ফেলে দিতে পারে) বর্গক্ষেত্র পেতে 10 উইন্ডোজ (নন-ওভারল্যাপিং?) গড়ে আপনি স্পেকট্রাম গণনা করছেন বলে মনে হচ্ছে।

প্রথমটি যাচাই করে দেখুন যে শিখরটি ডানদিকের বাক্সে রয়েছে। আপনি নমুনা হার কী তা বলেননি, তবে বিন 743 স্যাম্পলিং হারের চেয়ে 743/16384 গুণ হবে। যদি সংকেতটি সত্যিই 800 হার্জেড হয় তবে এটি Fs কে প্রায় 17640 নমুনা / সেকেন্ডে রাখে। এটা ভুল মনে হচ্ছে। আপনার পরীক্ষার সংকেত সম্ভবত 8000, 16000, 22050, 32000, 44100, বা 48000 এর মতো একটি মান হারে হবে F Fs = 22050 এর জন্য, শিখরটি বিনের 800/22050 * 16384 = 594 তে তীব্রতর হবে।

চেক করার জন্য আরও একটি মানদণ্ড হ'ল সময় এবং ফ্রিকোয়েন্সি ডোমেনগুলিতে সংকেতের মোট শক্তি প্রায় একই approximately পাইথনের উদাহরণ এখানে:

In [1]: NFFT = 2048; N = 10*NFFT; n = arange(N); Fs = 22050
In [2]: x = 0.4*cos(2*pi*400/Fs*n) + 0.6*cos(2*pi*800/Fs*n)

In [3]: y,freqs = psd(x, NFFT=NFFT, Fs=Fs, pad_to=16384)  # PSD by Welch's Method

In [4]: sum(x**2)/Fs           # time-domain energy
Out[4]: 0.24149869319296949
In [5]: sum(y) * N/16384       # frequency-domain energy
Out[5]: 0.24148752834391252

ইনপুট সিগন্যাল এক্স, যা এফএস = 22050 নমুনা / সেকেন্ডে দুটি সাইনোসয়েড নিয়ে গঠিত, আকারের 10 টি নন-ওভারল্যাপিং উইন্ডোতে বিভক্ত করা হয়েছে = 2048 নমুনা। পিএসডি-তে কল (পাওয়ার বর্ণালী ঘনত্ব) দশ 16384-পয়েন্ট ডিএফটি এর বর্গক্ষেত্রের গড় হিসাবে স্পেকট্রাম ওয়াকে গণনা করে (আসলে এটি 8193 পয়েন্ট যেহেতু এক্স বাস্তব-মূল্যবান)।

গণিত ফ্রিকোয়েন্সি-ডোমেন শক্তির N / 16384 এর একটি স্কেলিং ফ্যাক্টর রয়েছে কারণ পিএসডি ফাংশনটি মোট সিগন্যালের দৈর্ঘ্যের পরিবর্তে ডিএফটি আকারে y কে স্কেল করে। আপনার সমস্যাটি কীভাবে পিএসএসকে সাধারণীকরণ করবে তা নির্ভর করে এটি কোনও সমস্যা কিনা। আর একটি .চ্ছিক স্বাভাবিককরণ 1 / এফ দ্বারা স্কেলিং হয়। এটি শক্তির সাথে মূল অ্যানালগ সংকেতের সাথে মেলে। ডিফল্ট স্বাভাবিককরণগুলি লাইব্রেরিতে ভালভাবে নথিভুক্ত করা উচিত।


আমি আমার সাইন ওয়েভ সিগন্যালটি পরীক্ষা করেছি এটি 1000 হার্জেড। খনি এফএফটি সঠিক উত্তর দেয়। আপনার সহায়তার জন্য ধন্যবাদ।

10

আপনাকে এফএফটি-র আউটপুটটির দৈর্ঘ্য প্লট করতে হবে। আমি আপনার প্রোগ্রামিং ভাষার সাথে পরিচিত নই, তবে পাইথনে আপনি এমন কিছু ব্যবহার করবেন plot(abs(fft(a)))। একটি নিঃশব্দ ইনপুট জন্য, আউটপুট সমস্ত শূন্য করা উচিত। সাইন ওয়েভ ইনপুটটির জন্য, আপনার দুটি স্পাইক দেখতে হবে:

বিকল্প পাঠ

একটি বাস্তব সংকেতের জন্য, স্পাইকগুলি বাম থেকে ডানদিকে প্রতিসামন্ডিত হবে। আপনি যদি সত্যিকারের এফএফটি করছেন , যদিও (যা আরও গণনামূলকভাবে দক্ষ) আপনি কেবলমাত্র আউটপুট হিসাবে প্লটের বাম অর্ধেকটি পাবেন, কারণ এটি অনর্থক আয়না চিত্রটিকে উপেক্ষা করে।

যদি ফ্রিকোয়েন্সি বেশি হয় তবে স্পাইকগুলি কেন্দ্রের কাছাকাছি থাকবে। যদি ফ্রিকোয়েন্সি খণ্ড আকারের সাথে পুরোপুরি সমন্বয় করে থাকে তবে স্পাইকটি কেবল এক পয়েন্ট প্রশস্ত হবে এবং সমস্ত কিছু ঠিক হবে Otherwise অন্যথায় এটি উপরের মতো টেপারিং "স্কার্ট" পাবে।


আপনি প্রশস্ততা হিসাবে পাওয়ার বর্ণালী মান বলতে চান?

t -> সময়ের রেফারেন্স সহ?

সময় সম্পর্কে চিন্তা করবেন না। আপনি যদি কেবল এফএফটি কাজ করছে কিনা তা যাচাই করে থাকেন, আপনার যা যা করতে হবে তা হ'ল মাত্রার আকারটি এর সাথে মিল রয়েছে কিনা তা পরীক্ষা করে দেখুন।
এন্ডোলিথ

আমার এফএফটি সঠিকভাবে কাজ করছে তা আমি প্লট করতে পারছি না। আমি নিখরচায় আমার নিখরচায় গ্রাফটি বাস্তবায়নের চেষ্টা করব a অনেক ধন্যবাদ।

1
@ ক্লাবাচ্চিও: ওহ। এফএফটি প্লটের শুরু এবং শেষে f = 0 অক্ষর সহ একটি আউটপুট উত্পাদন করে। প্লটের মধ্যবিন্দুটি হল f = fs / 2 অক্ষ। প্লটটি পুনরায় সাজানোর জন্য প্রায়শই একটি fftfreq বা foutshift ফাংশন থাকে যাতে 0 ফ্রিকোয়েন্সি কেন্দ্রে থাকে। flic.kr/p/arVeZT
এন্ডোলিথ

0

আমি এক্সেল বিশ্লেষণ টুলপ্যাকের মধ্যে ফুরিয়ার বিশ্লেষণ সরঞ্জামটি ডেটা এবং ফলাফলগুলি সম্পর্কে দ্রুত চেক করতে ব্যবহার করেছি।


আমি ম্যাক কাজ করছি।

@ ওয়ারিয়র - তারপরে ম্যাকপোর্টস বা ফিংক ব্যবহার করে জিনুমারিক ইনস্টল করতে ( আপনি যদি এটি চান তবে প্লাটিপাসের মোড়ক সম্পর্কিত কিছু তথ্যের জন্য এই পৃষ্ঠাটিও দেখুন )
কেভিন ভার্মির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.