मैं वर्तमान में कुछ चौकोर परिवर्तन एल्गोरिदम लिखने की कोशिश कर रहा हूं।असतत फूरियर
public class DFT {
public static Complex[] Transform(Complex[] input) {
int N = input.Length;
Complex[] output = new Complex[N];
double arg = -2.0 * Math.PI/(double)N;
for (int n = 0; n < N; n++) {
output[n] = new Complex();
for (int k = 0; k < N; k++)
output[n] += input[k] * Complex.Polar(1, arg * (double)n * (double)k);
}
return output;
}
}
तो मैं निम्नलिखित कोड के साथ इस एल्गोरिथ्म का परीक्षण किया:: मैं गणितीय परिभाषा में वर्णित के रूप में एक सरल एफ टी एल्गोरिथ्म के साथ शुरू किया
private int samplingFrequency = 120;
private int numberValues = 240;
private void doCalc(object sender, EventArgs e) {
Complex[] input = new Complex[numberValues];
Complex[] output = new Complex[numberValues];
double t = 0;
double y = 0;
for (int i = 0; i < numberValues; i++) {
t = (double)i/(double)samplingFrequency;
y = Math.Sin(2 * Math.PI * t);
input[i] = new Complex(y, 0);
}
output = DFT.Transform(input);
printFunc(input);
printAbs(output);
}
परिवर्तन ठीक काम करता है, लेकिन केवल numberValues यदि एक से अधिक है नमूनाकरण की संख्या फ़्रिक्वेंसी (इस मामले में: 120, 240, 360, ...)। 240 मूल्यों के लिए मेरे परिणाम Thats:
http://s1.directupload.net/images/110928/n3m8hqg6.jpg
परिवर्तन ठीक काम किया।
मैं 280 मूल्यों की गणना करने मैं इस परिणाम मिलता है कोशिश कर रहा हूँ, तो: अगर मैं अपने परिकलित मानों की संख्या में परिवर्तन
http://s7.directupload.net/images/110928/qizoiqbt.jpg
क्यों मैं एक गलत परिणाम मिल रहा है? मुझे यकीन नहीं है कि मेरी समस्या यहां मेरे कोड या डीएफटी की गणितीय परिभाषा की गलतफहमी है। किसी भी तरह से, क्या कोई मेरी समस्या से मेरी मदद कर सकता है? धन्यवाद।
क्या आप मुझे बता सकते हैं कि आपके ट्रांसफॉर्म फ़ंक्शन के लिए इनपुट एक जटिल सरणी क्यों है?निश्चित रूप से यदि आप मानक ध्वनि तरंग (समय-डोमेन) से परिवर्तित हो रहे हैं, तो यह एक डबल डबल सरणी होगी? –
ठीक है, मुझे लगता है - काल्पनिक हिस्सा 0 पर सेट है, इसलिए यह अनिवार्य रूप से बराबर है कि यह केवल एक डबल था। आपके कोड में, 'Complex.Polar' को 'Complex.FromPolarCordordates' होना चाहिए। –
भूखंडों के लिए आप क्या उपयोग करते हैं? – GorillaApe