টিউনেবল বাটারওয়ার্থ ফিল্টারগুলির জন্য কি কোনও মানক বাস্তবায়ন ফর্ম রয়েছে?


17

বাটারওয়ার্থ ফিল্টার বাস্তবায়নের একটি স্ট্যান্ডার্ড উপায় হ'ল দ্বিতীয়-ক্রমের বিভাগগুলির একটি ক্যাসকেড সহ প্রতিটি জটিল-সংযুক্ত মেরুতে জুড়ে। চতুর্থ-অর্ডার ফিল্টারের জন্য, উদাহরণস্বরূপ, দুটি দ্বিতীয়-ক্রমের বিভাগ থাকবে be যদি আমরা বিবেচনা করি যে কীভাবে জেড-প্লেনটিতে লোপপাস ফিল্টারটির জন্য খুঁটির অবস্থানগুলি নাইটুইস্টের কাছাকাছি 0hz কাছাকাছি ডিজাইন করা হয়েছে তবে প্রতিটি জোড়ের খুঁটি দ্বারা পথটি "অদলবদল" ইউনিট বৃত্তের ভিতরে একটি জোড় চাপের সাথে মিলে যায় , নিম্নলিখিত চিত্র দ্বারা চিত্রিত [চতুর্থ ক্রম ফিল্টার জন্য]:

চতুর্থ-অর্ডার বাটারওয়ার্থ লোপাস ফিল্টারগুলির জন্য জেড-বিমানের মেরু অবস্থানগুলি

এই ফিল্টারগুলি কত দিন ধরে ছিল এবং এই "আরকস" এস-প্লেনের সোজা রেখার সাথে মিল রেখে সত্য দেওয়া হয়েছে, এটি যুক্তিযুক্ত যে দাঁড়িয়েছে যে কেউ একটি একক পরামিতি দ্বারা একটি বাস্তবায়ন ফর্ম তৈরি করতে পেরেছিল যা খুঁটিগুলি ঝুলতে সক্ষম হয় "রান টাইম" এ আরকস বরাবর ["ডিজাইনের সময়" এর বিপরীতে]। যাইহোক, আমি এখনও এর মতো কিছুই আসেনি।

এটি করার বিভিন্ন উপায় নিয়ে বিশেষত পরিসরের অংশগুলির মধ্যে এবং এটিতে কিছুটা অতিরিক্ত গণনা নিক্ষেপের ইচ্ছার সাথে তুলনা করা তুলনামূলক সহজ। আমি যা ভাবছি তা হ'ল:

কোনও প্রদত্ত আদেশের টিউনযোগ্য [ডিজিটাল] বাটারওয়ার্থ ফিল্টার বাস্তবায়নের কোনও মানক উপায় আছে যে ১) এর সর্বোত্তম বৈশিষ্ট্য রয়েছে (উদাহরণস্বরূপ দক্ষতা, দৃust়তা) এবং 2) পুরো পরিসীমা জুড়ে?

বা এটি কি সত্যিই এত সহজ সমস্যা যে এটি সম্পর্কে কথা বলতে কেউই বিরক্ত করে না? যদি এটি হয় তবে মনে হয় এটি "স্ট্যাটিক" ডিজাইনের বিকল্পগুলির পাশে ফিল্টার ডিজাইন প্রোগ্রামগুলিতে প্রদর্শিত হবে।

আমি এটি খুঁজে পেলাম: ভেরিয়েবল কাটঅফ ফ্রিকোয়েন্সি সহ একাধিক উদ্দেশ্য বাটারওয়ার্থ ফিল্টার , তবে প্রথম গুগলিংয়ের মধ্যে এটি কী আছে সে সম্পর্কে খুব বেশি তথ্য বলে মনে হয় না।

আপডেট (পুনরায়: উত্তর)

আরও কিছুটা পরিষ্কার হতে হবে:

  • আমি একটি পরামিতি সহ একটি "মেটা-ডিজাইন" সন্ধান করছি ([0,1] থেকে বলুন) যা ডিসি থেকে নাইটুইস্টে (কাটাকে সাধারণীকরণের সময়) সময়-পরিবর্তিত সিস্টেমে স্বয়ংক্রিয়ভাবে কাটঅফটি সামঞ্জস্য করবে। বাটারওয়ার্থ সীমাবদ্ধতা বাদে এই দ্বি-মেরু অনুরণকের মতো কিছু । ধারণাটি হ'ল প্যারামিটার গণনা করা রানটাইমে সাধারণত অফলাইন নকশা পদ্ধতিতে যাওয়ার চেয়ে আরও কার্যকর।
  • আমি কীভাবে একটি "মেটা-ফিল্টার" ডিজাইন করব তাও খুঁজছি না (যেমন সংখ্যার পরিবর্তে ভেরিয়েবলগুলি দিয়ে গণিত করুন), আমি ভাবছি যে স্ট্যান্ডার্ড [অ-স্পষ্টত] বাস্তবায়ন ফর্মগুলির জন্য পছন্দ আছে কিনা - কারণ, বলুন, স্ট্যাটিক কেসের সাথে মিলে যায় এমন সোজাসুজি পদ্ধতির সময়-পরিবর্তিত ক্ষেত্রে সংখ্যাসূচক সমস্যা শেষ হয়।
  • হতে পারে কোনও সমস্যা নেই এবং সরাসরি ব্যবহারের জন্য ব্যবহারিক জিনিসটি ব্যবহার করা হয়। এটা দুর্দান্ত হবে। আমার উদ্বেগ হ'ল আমি যে বিষয়গুলির পরামর্শ নিয়েছি সেগুলির মধ্যে আমি এই বিষয়টি স্পষ্টভাবে উল্লেখ করতে দেখিনি, তবে সম্ভবত আমি সত্যিই স্পষ্ট কিছু মিস করেছি, তাই আমি জিজ্ঞাসা করছি।
  • এখানে আরও বিশদ যুক্ত করার প্রক্রিয়াতে, আমি প্যারামেট্রিক বিভ্যাড স্ট্রাকচারগুলির একটি সাধারণ চিকিত্সা জুড়ে ছুটে এসেছি , যা আমি যা খুঁজছি প্রায় এটিই (এবং কিছু সুন্দর উল্লেখ রয়েছে)।

আপডেট 2

আমি জেসন আর-এর কাছে আমার দ্বিতীয় মন্তব্যে যেভাবে উত্তর দিয়েছি তার মতো উত্তর খুঁজছি:

"ওহ হ্যাঁ, আপনি ট্যাপড স্টেট ল্যাটিক্স ফর্মের মধ্যে, তাই-ও-তাই-এর থিসিস থেকে প্যারামিট্রাইজেশন III-2b ব্যবহার করতে চান কারণ এটি সংখ্যার ন্যূনতম সংখ্যার ব্যবহারের সময় যেমন এবং এই জাতীয় প্রান্তটি সমাধান করে।"

হতে পারে এর মতো কিছুই অস্তিত্বহীন, তবে আমার প্রশ্নটি এটি হয় কিনা, এবং যদি তা হয় তবে এটি কী, বা আমি এটি কোথায় খুঁজে পাব?

জ্যাকপট

জেসন আর এর উত্তরের টিপ ওয়েসকোটের কম.ডেস্প থ্রেডে দেওয়া "পর্যবেক্ষক ক্যানোনিকাল ফর্ম" একটি সূত্রের ভিত্তিতে , আমি ধরে নিয়েছি যে কন্ট্রোল সিস্টেমের সাহিত্যে আমাকে প্রায় খনন করতে হবে, তাই আমি একটি অনুসন্ধান করার চেষ্টা করেছি বাটারওয়ার্থ "স্টেট স্পেস" , এবং এটি নীচে, খুব দুর্দান্ত, ডিজাইনিং / প্রয়োগকরণের চিকিত্সা, কেবল প্যারামেট্রিক বাটারওয়ার্থই নয়, চেবিশেভ এবং এলিপটিক ফিল্টারগুলিও পরিণত করেছে:

সোফোক্লেস জে। অরফানিডিস, "হাই-অর্ডার ডিজিটাল প্যারামেট্রিক ইকুয়ালাইজার ডিজাইন," জে অডিও ইঞ্জিন। সক।, ভোল। 53, পৃষ্ঠা 1026-1046, নভেম্বর 2005।

এটি খনন করতে কিছুটা সময় নিতে চলেছে, তবে আমি এখন পর্যন্ত যা পড়েছি তার উপর ভিত্তি করে, আমি যা খুঁজছি তা যদি না হয় তবে আমি খুব অবাক হব। আমি এইটি জেসন আরকে দিচ্ছি কম্পম্প.ডেস্প রেফারেন্সের জন্য যা আমাকে ওরফানিডিস পেপারে নিয়ে গেছে। তার উত্তরটি বাটারওয়ার্থ ফিল্টারগুলি ডিজাইনের একটি দুর্দান্ত ব্যবহারিক ওভারভিউও।

উত্তর:


10

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

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

  2. ব্যবহার করে বিলিনিয়ার ট্রান্সফর্মটি , আপনার ফিল্টারটির ডিজিটাল উপলব্ধিতে এনালগ প্রোটোটাইপের মেরু অবস্থানগুলি তাদের সংশ্লিষ্ট জায়গায় ম্যাপ করুন।

  3. আবার, ডিজিটাল ফিল্টারটি ২ য় ধাপে পাওয়া পোলের অবস্থানগুলি দ্বারা সংজ্ঞায়িত করা হয়েছে the য় the খুঁটিগুলিকে জোড়ায় বিভক্ত করে দ্বিতীয়-ক্রম বিভাগে বিভক্ত করুন

এটাই. যেমনটি আমি বলেছি, আপনার প্রয়োজন মত প্যারামিটার ব্যবহার করে প্রোগ্রামারিকভাবে বাটারওয়ার্থ ফিল্টার ডিজাইন করা সোজা; অপারেশনগুলির কোনওটিই প্রয়োগ করা মারাত্মক জটিল নয়।

সম্পাদনা: কী পরিণতিটি সন্ধান করছেন তা আমি সত্যিই নিশ্চিত নই। আমি মনে করি যে আপনি বাটারওয়ার্থ ফিল্টারটি নির্দিষ্ট করে নির্দিষ্ট সময়ের পরিবর্তিত সহগগুলির সাথে আইআইআর ফিল্টারগুলি কীভাবে প্রয়োগ করবেন সে সম্পর্কে সর্বাধিক আগ্রহী। আমি ধরে নিয়েছি আপনার লক্ষ্যটি ফিল্টার কাট অফের ফ্রিকোয়েন্সি পরিবর্তন করার সময় শৈল্পিকাগুলি হ্রাস করা; এটি এই বছরের শুরুতে comp.dsp নিউজ গ্রুপে আলোচনায় আচ্ছাদিত হয়েছিল । এই ফিল্টার কাঠামোর জন্য আপনার ব্যবহারের কেস বা প্রয়োজনীয়তাগুলি কী তা আমি নিশ্চিত নই, স্যুইচিংটি সম্পন্ন করার বিভিন্ন উপায় রয়েছে।

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

আপনি জেড-প্লেনে ডিজিটাল ফিল্টারটির মেরু অবস্থানগুলির জ্যামিতি বিশ্লেষণ করে মেরু-অবস্থান-গণনা প্রক্রিয়াটি সম্ভাব্যতর করে তুলতে পারেন। অ্যানালগ বাটারওয়ার্থ ফিল্টারটিতে মেরু রয়েছে যা এস-প্লেনের বাম অর্ধেক অংশে একটি অর্ধবৃত্তে থাকে; বিলাইনার এই অর্ধবৃত্তটিকে উপবৃত্তাকার-বর্ণন প্যাটার্নে রূপান্তর করে যা আপনি আপনার প্রশ্নের বিবরণে চিত্রিত করেছেন। অ্যানালগ বাটারওয়ার্থ ফিল্টারের খুঁটি, বিলিনিয়ার ট্রান্সফর্মের ম্যাপিং ফাংশন এবং কিছু বীজগণিতের সাথে এই জ্ঞাত প্যাটার্ন ব্যবহার করে আপনি ডিজিটাল ফিল্টারটির মেরু অবস্থানগুলির জন্য তুলনামূলকভাবে সহজ অভিব্যক্তি নিয়ে আসতে সক্ষম হবেন, আপনাকে আরও সহজবোধ্য ফিল্টার দেবে টিউনিং অ্যাকশন।


জেসন, আমি প্রদত্ত বাটারওয়ার্থ স্পেসিফিকেশন কীভাবে ডিজাইন করব তা আমি খুঁজছি না, আমি একটি "মেটা-ডিজাইন" খুঁজছি। আমি আরও কিছু বিশদ দিয়ে প্রশ্নটি আপডেট করব।
datageist

1
পুনঃ সম্পাদনা করুন। আপনি শেষ অনুচ্ছেদে বর্ণিত প্রক্রিয়াটি হ'ল আমি কীভাবে এটি ব্যবহার করব - আমি কেবল ভাবছি যে এটি আসলে কোথাও আচ্ছাদিত হয়েছে কিনা। অন্য কথায়, "ওহ হ্যাঁ, আপনি তাই-ও-তাই-র থিসিস থেকে প্যারামিট্রাইজেশন III-2b ব্যবহার করতে চান, টেপ স্টেট ল্যাটিস ফর্মের মধ্যে কারণ এটি ন্যূনতম সংখ্যার ব্যবহারের সময় যেমন এবং এই ধরণের কেস সমাধান করে। "
ডেটাজেস্ট

1
ছোট নিট-পিক মন্তব্য: জেড প্লেনে বিডাব্লু ফিল্টারটিতে প্রকৃতপক্ষে শূন্য রয়েছে। লো পাস ফিল্টারগুলির জন্য এগুলি সব -1 এ এবং উচ্চ পাস ফিল্টারগুলির জন্য তারা +1 এ রয়েছে।
হিলমার

গুলি±গুলিগুলি0

2

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

void AnalogLowPass::design (int numPoles)
{
  if (m_numPoles != numPoles)
  {
    m_numPoles = numPoles;

    reset ();

    const double n2 = 2 * numPoles;
    const int pairs = numPoles / 2;
    for (int i = 0; i < pairs; ++i)
    {
      complex_t c = std::polar (1., doublePi_2 + (2 * i + 1) * doublePi / n2);
      addPoleZeroConjugatePairs (c, infinity());
    }

    if (numPoles & 1)
      add (-1, infinity());
  }
}

যেমন আপনি দেখতে পাচ্ছেন, মেরুগুলির অবস্থানটি এস-প্লেনটিকে "জোড়া" সমান বিভাগে বিভক্ত করে গণনা করা হয়।

সমস্ত সাধারণ ফিল্টার প্রতিক্রিয়াগুলির জন্য উপযুক্ত কোড সরবরাহ করা হয়: প্রত্যেকের শেল্ফ সংস্করণ সহ চেবিশেভ, এলিপটিক, লেজেন্ড্রে।

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

স্ক্রিনশট


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