मान लीजिए कि आप आवृत्तियों को देखने के लिए एक अलग फूरियर ट्रांसफॉर्म का उपयोग करते हैं, तो आपको सामान्यीकृत आवृत्तियों को वापस भौतिक वाले (यानी हर्ट्ज) में कैसे समझना है, इस बारे में सावधान रहना होगा।
कैसे एक संकेत की शक्ति स्पेक्ट्रम की गणना करने के पर FFTW tutorial के अनुसार:
#include <rfftw.h>
...
{
fftw_real in[N], out[N], power_spectrum[N/2+1];
rfftw_plan p;
int k;
...
p = rfftw_create_plan(N, FFTW_REAL_TO_COMPLEX, FFTW_ESTIMATE);
...
rfftw_one(p, in, out);
power_spectrum[0] = out[0]*out[0]; /* DC component */
for (k = 1; k < (N+1)/2; ++k) /* (k < N/2 rounded up) */
power_spectrum[k] = out[k]*out[k] + out[N-k]*out[N-k];
if (N % 2 == 0) /* N is even */
power_spectrum[N/2] = out[N/2]*out[N/2]; /* Nyquist freq. */
...
rfftw_destroy_plan(p);
}
नोट यह डेटा लंबाई भी है कि नहीं कर रहे हैं संभालती है। ध्यान दें कि विशेष रूप से यदि डेटा की लंबाई दी जाती है, तो एफएफटीडब्ल्यू आपको "बिन" प्रदान करेगा जो Nyquist आवृत्ति (नमूना दर 2 से विभाजित) के अनुरूप है। अन्यथा, आपको यह नहीं मिलता है (यानी अंतिम बिन निक्विस्ट के ठीक नीचे है)।
एक MATLAB example समान है, लेकिन वे उदाहरण के लिए 1000 की लंबाई (सम संख्या) चयन कर रहे हैं:
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)).*abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
सामान्य तौर पर, यह कार्यान्वयन (एफ टी के) निर्भर हो सकता है। आपको एक ज्ञात आवृत्ति पर एक परीक्षण शुद्ध साइन लहर बनाना चाहिए और फिर सुनिश्चित करें कि गणना एक ही संख्या देता है।
एफएफटी आपको अपने सिग्नल के साइनसॉइडल घटकों की आवृत्ति देगा। यदि आप वास्तविक सिग्नल (किसी भी आकार) की आवृत्ति को मापना चाहते हैं तो आपको एफएफटी के बारे में भूलना होगा और शून्य क्रॉसिंग, या पीक पीक सर्च इत्यादि के लिए नमूना स्कैनिंग का उपयोग करना होगा ... आपके सिग्नल के आकार और ऑफसेट पर थोड़ा सा निर्भर करता है। एफएफटी पर बीटीडब्ल्यू आपको 2 पिक्स मिलते हैं, यदि इनपुट सिग्नल वास्तविक डोमेन पर है तो पहले व्यक्ति का दर्पण है) तो एफएफटी – Spektre