পাইথন দিয়ে নতুনদের জন্য কম পাস ফিল্টার এবং এফএফটি


23

আমি সিগন্যাল প্রসেসিংয়ে এবং বিশেষত এফএফটি-তে নতুন, তাই আমি এখানে সঠিক জিনিসটি করছি কিনা তা সম্পর্কে নিশ্চিত নই এবং ফলাফলটি নিয়ে আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি।

আমার একটি পৃথক আসল ফাংশন (পরিমাপের ডেটা) রয়েছে এবং এটিতে একটি কম পাস ফিল্টার সেট আপ করতে চাই। পছন্দের সরঞ্জামটি পাইপটন হ'ল নামি প্যাকেজ সহ। আমি এই পদ্ধতিটি অনুসরণ করি:

  • আমার ফাংশনের fft গণনা করুন
  • উচ্চ ফ্রিকোয়েন্সি কাটা
  • বিপরীত ফুট সম্পাদন করুন

আমি যে কোডটি ব্যবহার করছি তা এখানে:

import numpy as np
sampling_length = 15.0*60.0 # measured every 15 minutes
Fs = 1.0/sampling_length
ls = range(len(data)) # data contains the function
freq = np.fft.fftfreq(len(data), d = sampling_length)
fft = np.fft.fft(data)
x = freq[:len(data)/2] 
for i in range(len(x)):
if x[i] > 0.005: # cut off all frequencies higher than 0.005
    fft[i] = 0.0
    fft[len(data)/2 + i] = 0.0
inverse = np.fft.ifft(fft)

এটা কি সঠিক পদ্ধতি? ফলাফলের inverseজটিল মূল্যবোধ, আমাকে বিভ্রান্ত করে রয়েছে।


1
আমি যখন এফএফটি শিখছিলাম তখন আমি এই ব্লগ পোস্টটি খুব সহায়ক বলে মনে করেছি। glowingpython.blogspot.com/2011/08/…
ডেভিড পুল

উত্তর:


23

ফলাফলটি জটিল হওয়ার বিষয়টি আশা করা যায়। আমি কয়েকটি বিষয় তুলে ধরতে চাই:

N

X[k]=X[Nk],k=1,2,,N21(Neven)

এক্স[]=এক্স*[এন-],=1,2,...,এন2(এন)
  • মনে রাখবেন যে ইও, এক্স [ 0 ] এবং এক্স [ এন এর জন্যএনএক্স[0]সাধারণভাবে সমান নয়, তবে তারা উভয়ই আসল। বিজোড় জন্যএন,এক্স[0]বাস্তব হতে হবে।এক্স[এন2]এনএক্স[0]

আমি দেখতে পাচ্ছি যে আপনি উপরের কোডে এই জাতীয় কিছু করার চেষ্টা করেছিলেন, তবে এটি বেশ সঠিক নয়। আপনি যদি বিপরীত এফএফটিতে পাস করে এমন সংকেতটিতে উপরের শর্তটি প্রয়োগ করেন তবে আপনার বাস্তব সংকেত পাওয়া উচিত।

গুলিআমিএন(এক্স)গুলিআমিএন

গুলিআমিএন

সিনক ফাংশন প্লট

গুলিআমিএনগুলিআমিএন

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


সিনক ফাংশন আদর্শ ফিল্টারিং, যদিও, না? অন্যান্য সমস্ত ফিল্টার এটির জন্য লক্ষ্য রেখেছিল, তবে অর্জন করছে না। ইমেজ প্রসেসিংয়ের জন্য এটি খারাপ কারণ চিত্রগুলি প্রথমে অ্যান্টিয়ালাইজড হয় না, তাই এটি বেজে উঠায় যা দেখতে ভয়ঙ্কর লাগে, তবে অডিও বা অন্যান্য সংকেতগুলির জন্য যা অ্যান্টিয়ালিয়াস নমুনা দেওয়ার আগে ফিল্টার করা হয়েছিল, এটি কি সেরা ফিল্টার আপনি পাবেন না?
এন্ডোলিথ

1
হ্যাঁ, আমার ফলাফল সংশ্লেষিত প্রতিসাম্য ছিল না। আমি কোড সংশোধন করেছি, এখন সবকিছু ঠিকঠাক কাজ করে। ধন্যবাদ!
বি

3
@ এন্ডোলিথ - একটি সিনস নির্দিষ্ট ধরণের ইন্টারপোলেশনগুলির জন্য আদর্শ ইন্টারপোলটার, তবে বেশিরভাগ ধরণের সাধারণ ফিল্টার প্রয়োজনীয়তার জন্য যেমন ফিল্টার হিসাবে পাস ব্যান্ড প্রতিক্রিয়া, ফ্ল্যাট ব্যান্ড প্রত্যাখ্যান ইত্যাদি ইত্যাদি আদর্শ হতে পারে
হটপাউ ২

"লোকেরা ফিল্টার পিও যেমন করে না কেন ফিল্টার প্রয়োগ করে না"
সিবস জুবিলিং

আপনাকে উইন্ডোড সিনস ব্যবহার করতে হবে। আপনি যদি সময়সীমাবদ্ধ না হন তবে এটি সর্বোত্তম ফিল্টার, চেবিচেভের চেয়ে অনেক ভাল।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.