গুণন বা সমঝোতা হিসাবে ফিল্টারিং বাস্তবায়নের জন্য এটি সংখ্যাগতভাবে আরও স্থিতিশীল?


12

আমি পঞ্চম-অর্ডার বাটারওয়ার্থ ফিল্টার অফলাইনে 20,000-নমুনা সংকেত ফিল্টার করার জন্য একটি প্রোগ্রাম লিখছি। আমি একটি এফএফটি বাস্তবায়নে অ্যাক্সেস পেয়েছি। ফিল্টারিং বাস্তবায়নের জন্য দুটি বিকল্প রয়েছে বলে মনে হচ্ছে:

  • সময় ডোমেনে অনুপ্রেরণামূলক প্রতিক্রিয়া সহ সিগন্যালটি সঙ্কলন করা, বা
  • ফ্রিকোয়েন্সি ডোমেনে অনুপ্রেরণামূলক প্রতিক্রিয়া সহ সিগন্যালকে গুণিত করা এবং ফলাফলকে বিপরীত-রূপান্তরকারী

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


এফএফটি পদ্ধতিটি বেশিরভাগ সংকেতের দৈর্ঘ্যের জন্য গণনা করতে আরও দ্রুত হবে। সময়-ডোমেন সমঝোতার সাথে কেবল স্বল্প দৈর্ঘ্যই দ্রুত হয়।
এন্ডোলিথ

উত্তর:


5

দৃolution়বিশ্বাসের সাথে, আপনি কোনও স্থায়িত্বের সমস্যায় পড়তে যাবেন না, কারণ কোনও পুনরাবৃত্ত ফিল্টারিং নেই, তাই আপনি কোনও ত্রুটি জমা করতে যাচ্ছেন না। অন্য কথায়, সিস্টেমটি সমস্ত শূন্য, কোনও খুঁটি নেই। আমি কাহিনী শুনেছি, তবে নিজের জন্য যাচাই করে দেখছি না, এফএফটি-ভিত্তিক কনভ্যুশনে টাইম-ডোমেন কনভ্যুশনের চেয়ে কম ত্রুটি রয়েছে, কেবল কারণ এটিতে O (n লগ এন) গাণিতিক ক্রিয়াকলাপগুলি O (n ^ 2) এর চেয়ে বেশি রয়েছে।

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

যতক্ষণ না আইআইআর ফিল্টারগুলির সাথে স্থায়িত্বের সমস্যা রয়েছে, উচ্চতর অর্ডারগুলিতে তাদের সমস্যা হওয়ার ঝোঁক রয়েছে - আমি কেবল একটি সংখ্যা বের করব এবং বলব rough ষ্ঠ অর্ডার এটি চাপ দিচ্ছে push পরিবর্তে, এগুলি সাধারণত ক্যাসকেড বিউক্যাড (২ য় অর্ডার ফিল্টার বিভাগ) হিসাবে প্রয়োগ করা হয়। আপনার 5 তম অর্ডার ফিল্টারের জন্য, এটি জেড-ডোমেন স্থানান্তর ফাংশন হিসাবে লিখুন (এটি একটি 5 তম ডিগ্রি যুক্তিযুক্ত ফাংশন হবে) এবং তারপরে এটির 5 টি খুঁটি এবং 5 জিরোতে ফ্যাক্টর করুন। জটিল কনজুগেটগুলি সংগ্রহ করুন এবং আপনার কাছে দুটি বিকাড এবং একটি প্রথম-অর্ডার ফিল্টার থাকবে। সাধারনত, খুঁটি ইউনিট বৃত্তের কাছাকাছি যাওয়ার সাথে সাথে স্থায়িত্বের সমস্যাগুলি ক্রপ হয়।

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


এফআইআর ফিল্টারগুলির জন্য কাজ করে এটির অর্থ কী? আমি ধরে নিয়েছিলাম যে আইআইআর ফিল্টারগুলি যে কোনওভাবে নমুনা করতে হবে। এড়াতে সাধারণত আইআইআর ফিল্টারগুলি কি টাইম ডোমেনে প্রয়োগ করা হয়?
Andreas

1
আমি যতদূর জানি, আইআইআর ফিল্টারগুলি সর্বদা সময় ডোমেনে প্রয়োগ করা হয়। একটি আইআইআর ফিল্টার (এখানে উদাহরণস্বরূপ, একটি দ্বিতীয়-অর্ডার ফিল্টার বা "বিকোয়াড") এর মত পার্থক্য সমীকরণ দ্বারা সংজ্ঞায়িত করা হয় y(n) = b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) - a1 * y(n-1) - a2 * y(n-2)। উল্লেখ্য এটি পূর্ববর্তী ইনপুট নমুনার (x মান) এবং পূর্ববর্তী আউটপুট নমুনার (y মান) সংমিশ্রণ। একটি এফআইআর ফিল্টার কেবল অতীত ইনপুটগুলির উপর নির্ভর করে, সুতরাং এটি একটি দক্ষ ফ্রিকোয়েন্সি ডোমেন বাস্তবায়ন স্বীকার করে। একটি আইআইআর ফিল্টার না, তবে যাইহোক খুব কার্যকরী কারণ আইআইআর ফিল্টারগুলি অনেক কম ক্রমযুক্ত থাকে।
schnarf

1
আইআইআর ফিল্টারগুলি অনেক কম ক্রমযুক্ত হওয়ার প্রবণতা হ'ল এই যে এফআইআর ফিল্টারের তুলনায় খুঁটিগুলি (পূর্ববর্তী আউটপুট নমুনাগুলির প্রতিক্রিয়া) ফিল্টারটিকে খুব কম সহগের সাথে আরও বেশি খাড়া পেতে দেয়। যখন আমি অনেক কম অর্ডার বলি, তখন একটি সাধারণ আইআইআর ফিল্টারটি সেকেন্ড-অর্ডার (5 সহগ) হতে পারে, একই কাজটির জন্য একটি সাধারণ এফআইআর ফিল্টারটিতে কয়েক হাজার সহগুণ থাকতে পারে।
schnarf

4

প্রায় সব ক্ষেত্রেই আপনার সেরা পছন্দটি সমঝোতা বা এফএফটি নয় তবে সরাসরি আইআইআর ফিল্টারটি সরাসরি প্রয়োগ করা হয় (উদাহরণস্বরূপ সসফিল্ট () ফাংশন ব্যবহার করে)। এটি সিপিইউ এবং মেমরির ব্যবহারের ক্ষেত্রে আরও কার্যকর হবে।

এটি একটি সংখ্যাগত পার্থক্য তৈরি করে কিনা তা নির্দিষ্ট ফিল্টারটির উপর নির্ভর করে। একমাত্র ক্ষেত্রে যেখানে কিছুটা পার্থক্য সরে যেতে পারে তা হ'ল যদি খুঁটিগুলি খুব একক বৃত্তের খুব কাছাকাছি থাকে। এমনকি কয়েকটি কৌশল যা সাহায্য করতে পারে। স্থানান্তর ফাংশন উপস্থাপনা এবং ফিল্টার ব্যবহার করবেন না () তবে সস্ফিল্ট () সহ খুঁটি এবং জিরো ব্যবহার করুন। পার্থক্য জন্য এখানে একটি উদাহরণ।

n = 2^16;  % filter length
fs = 44100; % sample rate
x = zeros(n,1); x(1) = 1;
f0 = 15; % cutoff frequency in Hz
% design with poles and zeroes
[z,p,k] = butter(5,f0*2/fs);
clf
plot(sosfilt(zp2sos(z,p,k),x));
% design with transfer function
[b,a] = butter(5,f0*2/fs);
hold on
plot(filter(b,a,x),'k');

ফিল্টার () প্রায় 15Hz @ 44.1kHz এর কাট অফে খারাপ হয়। সসফিল্ট () এর জন্য কাটফফ কোনও সমস্যা ছাড়াই ৪৪.১ কেএইচজেডের ১/১০০ নীচে থাকতে পারে।

যদি আপনার স্থায়িত্বের সমস্যা থাকে তবে এফএফটি খুব একটা সহায়তা করে না। যেহেতু আপনার ফিল্টারটি আইআইআর ফিল্টার, তাই আবেগের প্রতিক্রিয়া অসীম এবং প্রথমে কেটে যেতে হবে। এই খুব কম ফ্রিকোয়েন্সিতে প্ররোচিত প্রতিক্রিয়া এত দীর্ঘ হয়ে যায় যে এফএফটি এছাড়াও অযৌক্তিক হয়ে ওঠে।

উদাহরণস্বরূপ, যদি আপনি 1/100 হার্জ @ ৪৪.১ কেজি হার্জের একটি কাট অফ চান এবং ১০০ ডিবি এর আবেগ প্রতিক্রিয়াতে একটি গতিশীল পরিসর চান, আপনার প্রায় 25 মিলিয়ন নমুনা প্রয়োজন !!! এটি প্রায় 10 মিনিট 44.1 kHz এ এবং অনেকগুলি, আপনার আসল সংকেতের চেয়ে বহুগুণ বেশি


এটি সংখ্যার সমস্যা সম্পর্কে সত্যই প্রশ্নের উত্তর দেয় না, তবে সমস্যাগুলি সম্পর্কে আমি সচেতন ছিলাম না filter- ধন্যবাদ! আমার উচ্চ-পাসের কাট অফটি 0.5 হার্জ @ 250 হার্জ। সমস্যাগুলির কারণ কী filter? আমি নিজেই বাস্তবায়ন লিখছি।
আন্দ্রেস

2

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

x=randn(5,1);
y=randn(5,1);
X=fft(x,length(x)+length(y)-1);
Y=fft(y,length(x)+length(y)-1);

z1=conv(x,y);z2=ifft(X.*Y);
z1-z2

ans =

   1.0e-15 *

   -0.4441
   -0.6661
         0
   -0.2220
    0.8882
   -0.2220
         0
   -0.4441
    0.8882

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


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

@ জেসনআর ত্রুটিগুলি মেশিনের যথাযথতার মধ্যে রয়েছে যদি আপনি উপরের উদাহরণটিতে সিকোয়েন্সগুলির দৈর্ঘ্য 1e6 তে প্রসারিত করেন। আপনি যে ত্রুটিগুলি উল্লেখ করেছেন মূলত: দুর্বল ফিল্টার ডিজাইন বা খারাপ এফএফটি প্রয়োগের কারণে crop যদি সেগুলি ঠিক থাকে তবে আমি দেখতে পাচ্ছি না কেন সময়-ডোমেনে সমঝোতার কারণে ফ্রিকোয়েন্সি ডোমেনের থেকে আলাদা উত্তর দেওয়া উচিত।
Lorem Ipsum

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