সুতরাং আমি একটি ফ্রিকোয়েন্সি-ডোমেন ইন্টারপোলটার লেখার চেষ্টা করছি যা একটি সিগন্যাল এবং বিপরীত রূপান্তরগুলির ফ্রিকোয়েন্সি প্রতিক্রিয়াটিকে শূন্যপ্যাড দেয়। আমাকে দুটি মামলা মোকাবেলা করতে হবে:
- সম-দৈর্ঘ্যের প্রতিক্রিয়া - বিনটি বিভক্ত করতে হবে কারণ এটি অস্পষ্ট। সুতরাং আমি বর্ণালীটির নেতিবাচক অংশটি অনুলিপি করছি এবং এর মধ্যে শূন্যগুলি যুক্ত করব ।
n*(interp-1)-1
- অদ্ভুত দৈর্ঘ্যের প্রতিক্রিয়া - কোনও বিন নেই তাই কেবল ইতিবাচক / নেতিবাচক ফ্রিকোয়েন্সি বিভক্ত করুন এবং তাদের মধ্যে শূন্য .োকান।
n*(interp-1)
শূন্য-প্যাডিংয়ের কোডটি এখানে দেখা যাবে
// Copy negative frequency components to end of buffer and zero out middle
// inp - input buffer of complex floats
// n - transform size
// interp - interpolation amount
void zero_pad_freq(cfloat_t *inp, size_t n, size_t interp) {
if ((n % 2) == 0) {
memmove(inp + n*interp - n/2, inp + n/2, n/2*sizeof(cfloat_t));
memset (inp + n/2 + 1, 0, (n*(interp-1)-1)*sizeof(cfloat_t)); // Duplicate Fs/2 so we need one less zero
inp[n/2] /= 2.0;
inp[n*interp-n/2] /= 2.0;
} else {
memmove(inp + n*interp - n/2, inp + (n+1)/2, n/2*sizeof(cfloat_t));
memset (inp + (n+1)/2, 0, (n*(interp-1))*sizeof(cfloat_t));
}
}
কাল্পনিক চ্যানেলটিতে এটির একটি ছোট ছোট রিপল রয়েছে তবে এটি প্রায় খারাপ নয়: