Signal Processing এবং Filtering (সিগন্যাল প্রসেসিং এবং ফিল্টারিং) in MATLAB
MATLAB-এ Signal Processing এবং Filtering সিগন্যাল এনালাইসিস, পরিবর্তন, এবং উন্নয়নের জন্য ব্যবহৃত হয়। এটি বিশেষভাবে অডিও, ভিডিও, এবং ইমেজ প্রসেসিংয়ের জন্য গুরুত্বপূর্ণ। MATLAB-এ Signal Processing Toolbox এবং বিভিন্ন ফাংশনের মাধ্যমে সিগন্যাল ফিল্টারিং, ফ্রিকোয়েন্সি ডোমেইন বিশ্লেষণ, এবং ট্রান্সফর্মেশনের কাজ করা যায়।
১. সিগন্যাল তৈরি (Generating Signals)
MATLAB-এ বিভিন্ন ধরনের সিগন্যাল তৈরি করা যায়, যেমন সাইন ওয়েভ, কসমাইড ওয়েভ, এবং এলোমেলো সিগন্যাল। সিগন্যাল তৈরি করার জন্য sin, cos, এবং randn ফাংশন ব্যবহার করা হয়।
fs = 1000; % স্যাম্পলিং ফ্রিকোয়েন্সি
t = 0:1/fs:1-1/fs; % সময় সারণী
f = 5; % ফ্রিকোয়েন্সি (Hz)
signal = sin(2*pi*f*t); % সাইন ওয়েভ তৈরি
plot(t, signal);
title('Sine Wave');
xlabel('Time (s)');
ylabel('Amplitude');২. Fast Fourier Transform (FFT)
FFT ব্যবহার করে সিগন্যালের ফ্রিকোয়েন্সি ডোমেইন বিশ্লেষণ করা যায়। এটি সিগন্যালকে টাইম ডোমেইন থেকে ফ্রিকোয়েন্সি ডোমেইনে রূপান্তরিত করে।
Y = fft(signal);
L = length(signal);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = fs*(0:(L/2))/L;
plot(f, P1);
title('Single-Sided Amplitude Spectrum of Sine Wave');
xlabel('Frequency (Hz)');
ylabel('|P1(f)|');৩. Low-Pass ফিল্টার তৈরি (Low-Pass Filter Design)
Low-Pass Filter হাই ফ্রিকোয়েন্সি সিগন্যাল বাদ দিয়ে শুধু লো ফ্রিকোয়েন্সি অংশ রাখে। MATLAB-এ designfilt ফাংশন ব্যবহার করে বিভিন্ন ধরনের ফিল্টার তৈরি করা যায়।
d = designfilt('lowpassfir', 'PassbandFrequency', 30, ...
'StopbandFrequency', 50, 'SampleRate', fs);
filtered_signal = filter(d, signal);
plot(t, filtered_signal);
title('Filtered Signal (Low-Pass)');
xlabel('Time (s)');
ylabel('Amplitude');৪. High-Pass ফিল্টার তৈরি (High-Pass Filter Design)
High-Pass Filter লো ফ্রিকোয়েন্সি সিগন্যাল বাদ দিয়ে শুধু হাই ফ্রিকোয়েন্সি অংশ রাখে।
d = designfilt('highpassfir', 'PassbandFrequency', 50, ...
'StopbandFrequency', 30, 'SampleRate', fs);
filtered_signal = filter(d, signal);
plot(t, filtered_signal);
title('Filtered Signal (High-Pass)');
xlabel('Time (s)');
ylabel('Amplitude');৫. Band-Pass ফিল্টার তৈরি (Band-Pass Filter Design)
Band-Pass Filter নির্দিষ্ট একটি ফ্রিকোয়েন্সি রেঞ্জের মধ্যে থাকা সিগন্যাল রাখে এবং বাকি অংশ ফিল্টার করে দেয়।
d = designfilt('bandpassfir', 'FilterOrder', 20, ...
'CutoffFrequency1', 20, 'CutoffFrequency2', 60, ...
'SampleRate', fs);
filtered_signal = filter(d, signal);
plot(t, filtered_signal);
title('Filtered Signal (Band-Pass)');
xlabel('Time (s)');
ylabel('Amplitude');৬. Noise যোগ করা এবং ফিল্টারিং
সিগন্যালের সাথে Noise যোগ করে এবং পরে সেটি ফিল্টারিং করে পরিষ্কার করা যায়।
noisy_signal = signal + 0.5*randn(size(t)); % সিগন্যালের সাথে এলোমেলো Noise যোগ করা
% Low-Pass ফিল্টার ব্যবহার করে Noise ফিল্টার করা
d = designfilt('lowpassfir', 'PassbandFrequency', 30, ...
'StopbandFrequency', 50, 'SampleRate', fs);
filtered_signal = filter(d, noisy_signal);
% সিগন্যালের তুলনা
subplot(3,1,1); plot(t, signal); title('Original Signal');
subplot(3,1,2); plot(t, noisy_signal); title('Noisy Signal');
subplot(3,1,3); plot(t, filtered_signal); title('Filtered Signal');৭. Digital Filter Design
MATLAB-এ ডিজিটাল ফিল্টার ডিজাইন করা যায় এবং এদের বিভিন্ন প্রোপার্টি নিয়ন্ত্রণ করা যায়।
[b, a] = butter(4, 0.2); % 4th order Butterworth Low-Pass Filter
filtered_signal = filter(b, a, signal); % ডিজিটাল ফিল্টারিং
plot(t, filtered_signal);
title('Filtered Signal using Digital Filter (Butterworth)');
xlabel('Time (s)');
ylabel('Amplitude');৮. Power Spectral Density (PSD)
Power Spectral Density (PSD) সিগন্যালের শক্তি বা পাওয়ার ঘনত্ব ফ্রিকোয়েন্সি ডোমেইনে বিশ্লেষণ করে।
psd_signal = pwelch(signal);
plot(psd_signal);
title('Power Spectral Density');
xlabel('Frequency (Hz)');
ylabel('Power/Frequency (dB/Hz)');উদাহরণ: সিগন্যাল ফিল্টারিং এবং FFT বিশ্লেষণ
ধরা যাক, আমরা একটি সিগন্যাল তৈরি করবো যেখানে দুটি ভিন্ন ফ্রিকোয়েন্সি রয়েছে। তারপর Low-Pass Filter ব্যবহার করে ফিল্টারিং এবং FFT বিশ্লেষণ করা হবে।
fs = 1000;
t = 0:1/fs:1-1/fs;
signal = sin(2*pi*5*t) + 0.5*sin(2*pi*50*t); % 5 Hz এবং 50 Hz ফ্রিকোয়েন্সির সিগন্যাল
% FFT বিশ্লেষণ
Y = fft(signal);
L = length(signal);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = fs*(0:(L/2))/L;
figure;
plot(f, P1);
title('Frequency Spectrum of Original Signal');
xlabel('Frequency (Hz)');
ylabel('|P1(f)|');
% Low-Pass Filter তৈরি এবং ফিল্টারিং
d = designfilt('lowpassfir', 'PassbandFrequency', 10, ...
'StopbandFrequency', 20, 'SampleRate', fs);
filtered_signal = filter(d, signal);
% ফিল্টার করা সিগন্যালের FFT বিশ্লেষণ
Y_filt = fft(filtered_signal);
P2_filt = abs(Y_filt/L);
P1_filt = P2_filt(1:L/2+1);
P1_filt(2:end-1) = 2*P1_filt(2:end-1);
figure;
plot(f, P1_filt);
title('Frequency Spectrum of Filtered Signal');
xlabel('Frequency (Hz)');
ylabel('|P1(f)|');সংক্ষেপে
MATLAB-এ Signal Processing এবং Filtering ব্যবহার করে বিভিন্ন ধরনের সিগন্যাল প্রক্রিয়া করা যায়। FFT ব্যবহার করে সিগন্যালের ফ্রিকোয়েন্সি বিশ্লেষণ, Low-Pass, High-Pass, এবং Band-Pass ফিল্টার ডিজাইন এবং Noise ফিল্টারিং করা যায়। MATLAB-এর Signal Processing Toolbox এবং ফিল্টার ডিজাইন ফাংশন সিগন্যাল এনালাইসিস, ইমেজ এবং অডিও প্রসেসিংয়ের জন্য অত্যন্ত কার্যকর।
Read more