আমার প্রশ্নটি হ'ল, যদি আমি একটি সিগন্যাল উচ্চ-পাস করতে চাই, তবে এটি কি সিগন্যালটি কম-পাস এবং সংকেত থেকে বিয়োগের সমান? এটি কি তাত্ত্বিকভাবে একই? এটি কি কার্যত একই?
আমি অনুসন্ধান করেছি (গুগল এবং ডিএসপি.স্ট্যাকেক্সচেঞ্জ উভয়) এবং আমি বিবাদমূলক উত্তর পেয়েছি। আমি একটি সংকেত নিয়ে খেলছি এবং ফলাফলগুলি এখানে। আমি এর বেশি কিছু বুঝতে পারি না। এখানে প্রতি চার সেকেন্ডে একবারে নমুনা ফ্রিক্যোয়েন্সি সহ সিগন্যাল দেওয়া হয়েছে। আমি 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')