একটি উচ্চ-উত্তীর্ণ সিগন্যাল কি একটি সংকেত বিয়োগের মতো কম পাসের সংকেত হিসাবে একই?


14

আমার প্রশ্নটি হ'ল, যদি আমি একটি সিগন্যাল উচ্চ-পাস করতে চাই, তবে এটি কি সিগন্যালটি কম-পাস এবং সংকেত থেকে বিয়োগের সমান? এটি কি তাত্ত্বিকভাবে একই? এটি কি কার্যত একই?

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

এখানে চিত্র বর্ণনা লিখুন

এই প্রথম ছবিটি কালো রঙে আসল সিগন্যাল এবং নীল রঙে নিম্ন-পাস সংকেত দেখায়। তারা প্রায় একে অপরের শীর্ষ কিন্তু বেশ না। লাল বক্ররেখাটি সিগন্যাল বিয়োগ করে উচ্চ-পাস করা সংকেত যা সংকেতের ঠিক উপরে থাকে।

এখানে চিত্র বর্ণনা লিখুন

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

close all
clear all
clc

data = dlmread('data.txt');

Fs    = 0.25;    % Sampling Frequency
N     = 2674;    % Order
Fpass = 0.8/1000;  % Passband Frequency
Fstop = 1/1000;   % Stopband Frequency
Wpass = 1;       % Passband Weight
Wstop = 1;       % Stopband Weight
dens  = 20;      % Density Factor

% Calculate the coefficients using the FIRPM function.
b  = firpm(N, [0 Fpass Fstop Fs/2]/(Fs/2), [1 1 0 0], [Wpass Wstop], {dens});
Hd = dsp.FIRFilter('Numerator', b);
sum(Hd.Numerator)
datalowpassed = filtfilt(Hd.Numerator,1,data);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Fs    = 0.25;    % Sampling Frequency
N     = 2674;    % Order
Fstop = 0.8/1000;  % Stopband Frequency
Fpass = 1/1000;   % Passband Frequency
Wstop = 1;       % Stopband Weight
Wpass = 1;       % Passband Weight
dens  = 20;      % Density Factor

% Calculate the coefficients using the FIRPM function.
b  = firpm(N, [0 Fstop Fpass Fs/2]/(Fs/2), [0 0 1 1], [Wstop Wpass], {dens});
Hd = dsp.FIRFilter('Numerator', b);
sum(Hd.Numerator)
datahighpassed = filtfilt(Hd.Numerator,1,data);

figure
subplot(2,1,1)
plot(data,'-ko')
hold on
plot(datalowpassed,'-bo')
plot(data-datahighpassed,'-ro')
legend('Original Signal','Low-Passed','Signal - High-Passed')
subplot(2,1,2)
plot(data-datalowpassed,'-bo')
hold on
plot(datahighpassed,'-ro')
legend('Signal - Low-Passed','High-Passed')

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

আপনি এইভাবে একটি হাইপাস সিগন্যাল তৈরি করতে পারেন, তবে রোল অফের ক্রমটি সর্বদা প্রথম অর্ডার হয়: সাউন্ড.ওয়েস্টস্ট.আর্টিকেলস / আর্কাইভডকভার্স.চ.টি.এম. যদি আপনি প্রথমে বিয়োগের আগে এলপিএফের গ্রুপ দেরিতে সংকেতটি বিলম্ব করেন If , আপনি তৃতীয় অর্ডার পেতে পারেন
এন্ডোলিথ

উত্তর:


8

সাধারণভাবে আপনি একটি উচ্চ-পাস ফিল্টার করা সংকেত পাওয়ার জন্য কেবল আসলটি থেকে কম পাসের ফিল্টার্ড সংস্করণটি বিয়োগ করতে পারবেন না। নিম্নরূপ কারণ। আপনি আসলে যা করছেন তা হ'ল ফ্রিকোয়েন্সি প্রতিক্রিয়া সহ একটি সিস্টেম প্রয়োগ করা

(1)এইচ(ω)=1-এইচএলপি(ω)

এইচএলপি(ω)এইচএলপি(ω)

(2)|এইচ(ω)|=|1-|এইচএলপি(ω)||

(1) সন্তুষ্ট হলে সাধারণত এটি হয় না।

এইচএলপি(ω)

এইচএলপি(ω)=|এইচএলপি(ω)|φ(ω)

φ(ω)

(3)এইচএইচপি(ω)=φ(ω)-এইচএলপি(ω)=φ(ω)(1-|এইচএলপি(ω)|)

φ(ω)

অনুশীলনে এটি খুব সহজ যদি লো-পাস ফিল্টারের একটি লিনিয়ার ফেজ প্রতিক্রিয়া থাকে, কারণ তারপরে পর্যায় মেয়াদটি দেওয়া হয়

(4)φ(ω)=-ωτ

τএনτ=এন/2

সুতরাং আপনাকে যা করতে হবে তা নিম্নলিখিত:

  • এমনকি একটি অর্ডার সহ লিনিয়ার ফেজ এফআইআর নিম্ন-পাস ফিল্টার ডিজাইন করুন
  • filter()এক্সএলপি[এন]
  • τ=এন/2এক্স[এন]
  • এক্সএইচপি[এন]=এক্স[এন]-এক্সএলপি[এন]

মতলব / অক্টেভের একটি খুব সাধারণ চিত্র এখানে

h_lp = ফার 1 (100, .3); % লো-পাস ডিজাইন
এইচ_এইচপি = [জিরোস (50,1); 1; জিরোস (50,1)] - এইচ_এলপি; বিয়োগ দ্বারা% উচ্চ-পাস ডিজাইন
[এইচ_এলপি, ডাব্লু] = ফ্রিক্জেড (এইচ_এলপি, 1,1024);
[এইচ_এইচপি, ডাব্লু] = ফ্রিক্জেড (এইচ_এইচপি, 1,1024);
চক্রান্ত (W / 2 / Pi, 20 * LOG10 (ABS (H_lp)), W / 2 / Pi, 20 * LOG10 (ABS (H_hp)))
গ্রিড, অক্ষ ([0, .5, -100,5])

এখানে চিত্র বর্ণনা লিখুন

সম্পাদনা করুন:

যেহেতু আপনি filtfiltকমান্ডটি ব্যবহার করেছেন , এই স্তরটি কৃত্রিমভাবে মুছে ফেলা হয়েছে, এবং উপরের সমীকরণগুলি (1) এবং (2) সমতুল্য হয়ে উঠবে, কারণ সমস্ত ফ্রিকোয়েন্সি প্রতিক্রিয়াগুলি আসলে নকশাযুক্ত প্রতিক্রিয়ার স্কোয়ার আকারের হয়। সুতরাং, ফিল্টার ডিজাইন প্রক্রিয়া, সংখ্যার ত্রুটি এবং filtfiltফাংশনের কারণে সংঘটিত ছোট পার্থক্যের কারণে (স্বয়ংক্রিয়ভাবে প্রাথমিক শর্তাবলী শুরু এবং শেষের স্থানান্তরগুলি হ্রাস করা বেছে নেওয়া হয়েছে) বাদ দিয়ে, মূল ডেটা থেকে ফিল্টারযুক্ত ডেটা বিয়োগের ফলাফলের সাথে সরাসরি ফিল্টারিংয়ের অনুরূপ হওয়া উচিত পরিপূরক ফিল্টার সহ। যেহেতু এটি আপনার উদাহরণের ক্ষেত্রে না, তাই আমি সন্দেহ করি যে ফিল্টার ডিজাইনের রুটিন আপনাকে চূড়ান্ত উচ্চতর ফিল্টার অর্ডার দেওয়ার কারণে সমস্যা দেয়। আপনি যদি সহজ ফিল্টারগুলি দিয়ে একই কাজ করেন (আমি বেছে নিয়েছিএন=100), আপনি যা আশা করবেন তা পাবেন। নীচের চিত্রটিতে আপনি নীল রঙের উপাত্তগুলির একটি বিভাগ দেখছেন, সবুজতে লো পাস ফিল্টারের আউটপুট এবং লাল থেকে মূল ডেটা থেকে উচ্চ পাস ফিল্টারের আউটপুট বিয়োগের ফলাফল। সবুজ এবং লাল বক্ররেখা কার্যত অভিন্ন।

x = লোড ('data.txt'); ফিল্টার করার জন্য% ডেটা
h_lp = ফার 1 (100, .3); % এলপি আবেগ প্রতিক্রিয়া
h_hp = ফার 1 (100, .3, 'উচ্চ'); % এইচপি আবেগ প্রতিক্রিয়া
y = ফিল্টফিল্ট (h_lp, 1, এক্স); % কম পাস ফিল্টার প্রয়োগ করুন
yh = ফিল্টফিল্ট (এইচ_এইচপি, 1, এক্স); % উচ্চ পাস ফিল্টার প্রয়োগ করুন
yd = x - yh; উচ্চ পাস ফিল্টার সঙ্গে পার্থক্য দ্বারা% কম পাস
n = 1: দৈর্ঘ্য (এক্স);
চক্রান্ত (ঢ, এক্স, এন, Y, 'ছ।', এন, YD, 'R')
অক্ষ ([3500,4000,140,150])

এখানে চিত্র বর্ণনা লিখুন


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

বিস্তারিত প্রতিক্রিয়া জন্য ধন্যবাদ। এটি কয়েকটি জিনিস পরিষ্কার করেছে।
স্থির পয়েন্ট

3

স্কেলিং সম্পর্কিত:

10

ম্যাট এল এর চমৎকার উত্তর এক ছাড়াও শুধু বাতলান করতে পারে কি তিনি ব্যবহার করছে হিসাবে উল্লেখ করা হয় মাত্রার পরিপূরক ফিল্টার, যা রৈখিক-ফেজ এজাহার ফিল্টারের সাধারণ ক্ষেত্রে দেখা যায়, অর্থাত্,

|এইচএলপি|+ +|এইচএইচপি|=1

দুটি সমান্তরাল অলপাস বিভাগ থেকে ফিল্টার তৈরি করার সময় এবং আউটপুটগুলি যোগ / বিয়োগ করার সময় লোপপাস / হাইপাস ফিল্টারগুলি পরিবর্তে পাওয়ার পরিপূরক হবে , অর্থাৎ,

|এইচএলপি|2+ +|এইচএইচপি|2=1

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