Digital Signal Processing এর মৌলিক ধারণা

Signal Processing এবং Filtering (সিগন্যাল প্রসেসিং এবং ফিল্টারিং) - ম্যাটল্যাব (MATLAB) - Computer Programming

340

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 এবং ফিল্টার ডিজাইন ফাংশন সিগন্যাল এনালাইসিস, ইমেজ এবং অডিও প্রসেসিংয়ের জন্য অত্যন্ত কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...