1. Implementation of Butterworth, Chebyshev-I and Elliptic Filters for Speech Analysis
Beginner
Toolbox: Signal Processing & Audio
Deliverables: Code .m, Report
π― Problem & Objective: Design and analyze IIR digital filters (Butterworth, Chebyshev Type-I, and Elliptic) for low-pass, high-pass, and band-pass filtering of speech and audio signals. Observe and compare impulse, magnitude, and phase responses in MATLAB.
βοΈ Key MATLAB Functions:
buttercheby1ellipfilterfreqzfvtool
π Expected Output & Metrics: Frequency magnitude/phase response curves, passband ripple attenuation, transition bandwidth comparison, and filtered speech spectrograms.
fs = 16000; t = (0:fs-1)/fs;
speech_proxy = sin(2*pi*400*t) + 0.6*sin(2*pi*2500*t) + 0.3*randn(size(t));
fc = 1200;
[b_but, a_but] = butter(6, fc/(fs/2), 'low');
y_butter = filter(b_but, a_but, speech_proxy);
[b_cheb, a_cheb] = cheby1(6, 0.5, fc/(fs/2), 'low');
y_cheby = filter(b_cheb, a_cheb, speech_proxy);
[b_ellip, a_ellip] = ellip(6, 0.5, 50, fc/(fs/2), 'low');
y_ellip = filter(b_ellip, a_ellip, speech_proxy);
[h_b, f] = freqz(b_but, a_but, 1024, fs);
[h_c, ~] = freqz(b_cheb, a_cheb, 1024, fs);
[h_e, ~] = freqz(b_ellip, a_ellip, 1024, fs);
figure; plot(f, 20*log10(abs([h_b h_c h_e])), 'LineWidth', 1.5);
grid on; legend('Butterworth', 'Chebyshev-I', 'Elliptic');
xlabel('Frequency (Hz)'); ylabel('Magnitude (dB)'); title('IIR Speech Filter Response');
Est. Duration: 4β6 Hours
Request Custom Project →
2. Adaptive Filtering for Hearing Aids Using LMS Algorithm
Intermediate
Toolbox: DSP System & Audio
Deliverables: Code .m, Simulink Model
π― Problem & Objective: Design adaptive algorithms to enhance speech by attenuating ambient background acoustic noise for digital hearing aid applications. Implement and simulate Normalized LMS adaptive filters in MATLAB for real-time acoustic noise cancellation and feedback reduction.
βοΈ Key MATLAB Functions:
dsp.LMSFilterlmsfiltersnraudioplayer
π Expected Output & Metrics: SNR enhancement (>14 dB), convergence error curve, speech intelligibility index, and real-time audio playback comparison.
fs = 16000; t = (0:1/fs:1.5)';
s = sin(2*pi*500*t) + 0.5*sin(2*pi*1200*t);
noise_source = randn(size(t));
h_path = [0.8; -0.5; 0.3; -0.1];
noise_mic = filter(h_path, 1, noise_source);
d = s + noise_mic;
filterLength = 32; mu = 0.02;
lms = dsp.LMSFilter('Length', filterLength, 'StepSize', mu, 'Method', 'Normalized LMS');
[y_est, e] = lms(noise_source, d);
snr_initial = snr(s, noise_mic);
snr_recovered = snr(s, e - s);
fprintf('Initial SNR: %.2f dB | Enhanced SNR: %.2f dB\n', snr_initial, snr_recovered);
figure; subplot(2,1,1); plot(t(1:500), d(1:500)); title('Corrupted Microphone Signal');
subplot(2,1,2); plot(t(1:500), e(1:500)); title('Denoised Hearing Aid Speech Output');
Est. Duration: 1β2 Weeks
Request Custom Project →
3. Hybrid Median Filter Design for Edge-Preserving Image Restoration
Intermediate
Toolbox: Image Processing
Deliverables: Code .m, GUI App
π― Problem & Objective: Implement hybrid median filters combining cross, diagonal, and center directional neighborhood masks to remove impulse (salt-and-pepper) noise from grayscale and medical images while preserving fine edges and corner details better than standard 2D median filtering.
βοΈ Key MATLAB Functions:
medfilt2imnoisepsnrimmsessimpadarray
π Expected Output & Metrics: Peak Signal-to-Noise Ratio (PSNR > 32 dB), Structural Similarity Index (SSIM > 0.94), and edge preservation factor.
img = im2double(imread('cameraman.tif'));
noisy_img = imnoise(img, 'salt & pepper', 0.15);
[M, N] = size(noisy_img);
pad_img = padarray(noisy_img, [2 2], 'symmetric');
hybrid_out = zeros(M, N);
for i = 1:M
for j = 1:N
win = pad_img(i:i+4, j:j+4);
cross_vals = [win(3,:), win(:,3)'];
med_cross = median(cross_vals);
diag_vals = [diag(win)', diag(flipud(win))'];
med_diag = median(diag_vals);
hybrid_out(i,j) = median([med_cross, med_diag, win(3,3)]);
end
end
std_med = medfilt2(noisy_img, [5 5]);
fprintf('Standard Median PSNR: %.2f dB | Hybrid Median PSNR: %.2f dB\n', ...
psnr(std_med, img), psnr(hybrid_out, img));
Est. Duration: 1β2 Weeks
Request Custom Project →
4. Design of FIR Filter Using Symmetric Structure and Equiripple Windows
Beginner
Toolbox: Signal Processing & DSP System
Deliverables: Code .m, Report
π― Problem & Objective: Design efficient linear-phase FIR digital filters utilizing coefficient symmetry to halve hardware multiplier requirements. Compare Parks-McClellan (Remez) equiripple and Kaiser window designs, analyzing hardware multiplier cost and frequency response.
βοΈ Key MATLAB Functions:
firpmfirpmordfir1kaiserfvtooldsp.FIRFilter
π Expected Output & Metrics: Exact linear phase verification, group delay constancy, 50% multiplier savings, and passband ripple / stopband rejection metrics.
fs = 48000;
f_pass = 8000; f_stop = 10000;
devs = [0.01 0.001];
[N, fo, ao, w] = firpmord([f_pass f_stop], [1 0], devs, fs);
b_equiripple = firpm(N, fo, ao, w);
is_symmetric = isequal(b_equiripple, fliplr(b_equiripple));
fprintf('Filter Order: %d | Multipliers Required: %d (Symmetric Savings: 50%%)\n', ...
N, ceil((N+1)/2));
fvtool(b_equiripple, 1, 'Fs', fs);
Est. Duration: 4β6 Hours
Request Custom Project →
5. Wavelet Signal and Image Denoising Using Discrete Wavelet Transform (DWT)
Intermediate
Toolbox: Wavelet & Signal Processing
Deliverables: Code .m, Report
π― Problem & Objective: Implement multi-level Discrete Wavelet Transform (DWT) decomposition and adaptive soft/hard coefficient thresholding (VisuShrink, SureShrink) for signal and image denoising. Apply algorithms to noisy EEG biosignals and MRI brain scans, evaluating with MSE and PSNR.
βοΈ Key MATLAB Functions:
wavedecwaverecwthreshwdenoisethselectdwt2
π Expected Output & Metrics: Multi-resolution decomposition subbands, SNR enhancement (>12 dB), root mean square error (RMSE < 0.04), and preserved peak morphology.
fs = 1000; t = 0:1/fs:2;
clean_eeg = sin(2*pi*8*t) + 0.4*sin(2*pi*22*t);
noisy_eeg = clean_eeg + 0.45*randn(size(t));
wname = 'sym6'; level = 4;
[c, l] = wavedec(noisy_eeg, level, wname);
sigma = median(abs(detcoef(c, l, 1))) / 0.6745;
thr = sigma * sqrt(2*log(length(noisy_eeg)));
c_denoised = c;
for i = 1:level
d = detcoef(c, l, i);
d_thresh = wthresh(d, 's', thr);
end
clean_rec = wdenoise(noisy_eeg, level, 'Wavelet', wname, 'DenoisingMethod', 'UniversalThreshold');
figure; plot(t, noisy_eeg, 'r', t, clean_rec, 'b', 'LineWidth', 1.2);
legend('Noisy EEG', 'Wavelet Denoised'); title('DWT Denoising Performance');
Est. Duration: 1β2 Weeks
Request Custom Project →
6. Application of Spatial Domain Filters (Gaussian, Laplacian, Wiener) on Noisy Images
Beginner
Toolbox: Image Processing
Deliverables: Code .m, Report
π― Problem & Objective: Apply linear and non-linear spatial domain filters (Mean, Gaussian smoothing, Laplacian unsharp masking, and local adaptive 2D Wiener filtering) on images degraded by additive white Gaussian noise (AWGN) to evaluate filter efficiency and detail preservation.
βοΈ Key MATLAB Functions:
wiener2imgaussfiltfspecialimfilterpsnr
π Expected Output & Metrics: Comparative restoration plots, Mean Squared Error (MSE), Contrast Improvement Factor (CIF), and PSNR benchmarks.
img = im2double(imread('coins.png'));
noisy = imnoise(img, 'gaussian', 0, 0.02);
wiener_img = wiener2(noisy, [5 5]);
gauss_img = imgaussfilt(noisy, 1.2);
h_lap = fspecial('laplacian', 0.2);
sharpened = imfilter(wiener_img, h_lap);
enhanced_img = wiener_img - 0.4 * sharpened;
fprintf('Noisy PSNR: %.2f dB | Wiener PSNR: %.2f dB | Gaussian PSNR: %.2f dB\n', ...
psnr(noisy, img), psnr(wiener_img, img), psnr(gauss_img, img));
Est. Duration: 4β6 Hours
Request Custom Project →
7. Adaptive Median Filter (AMF) for High-Density Salt-and-Pepper Impulse Noise
Intermediate
Toolbox: Image Processing
Deliverables: Code .m, App
π― Problem & Objective: Implement a decision-based Adaptive Median Filter (AMF) that dynamically adjusts its local window size (from 3x3 to 7x7) based on impulse detection stages. Remove high-density (up to 70%) salt-and-pepper noise while preserving fine structural lines.
βοΈ Key MATLAB Functions:
imnoiseordfilt2padarraypsnrssim
π Expected Output & Metrics: Restored image with PSNR > 28 dB at 60% noise density, SSIM > 0.90, and comparison with standard median filter.
I = im2double(imread('cameraman.tif'));
noisy = imnoise(I, 'salt & pepper', 0.60);
[M, N] = size(noisy);
Smax = 7; denoised = noisy;
for i = 1:M
for j = 1:N
w = 3;
while w <= Smax
r_min = max(1, i - floor(w/2)); r_max = min(M, i + floor(w/2));
c_min = max(1, j - floor(w/2)); c_max = min(N, j + floor(w/2));
sub = noisy(r_min:r_max, c_min:c_max);
zmin = min(sub(:)); zmax = max(sub(:)); zmed = median(sub(:));
if zmed > zmin && zmed < zmax
if noisy(i,j) > zmin && noisy(i,j) < zmax
denoised(i,j) = noisy(i,j);
else
denoised(i,j) = zmed;
end
break;
else
w = w + 2;
denoised(i,j) = zmed;
end
end
end
end
fprintf('Restored Image PSNR at 60%% noise: %.2f dB\n', psnr(denoised, I));
Est. Duration: 1β2 Weeks
Request Custom Project →
8. Denoising Phaseless Diffraction Measurements Using ADMM and Plug-and-Play Prior
Advanced
Toolbox: Image Processing & Optimization
Deliverables: Code .m, Research Report
π― Problem & Objective: Recover complex image amplitude and phase from noisy, subsampled phaseless optical diffraction measurements (Phase Retrieval) using the Alternating Direction Method of Multipliers (ADMM) combined with Plug-and-Play (PnP) priors (TGV, NLM, and BM3D).
βοΈ Key MATLAB Functions:
fft2ifft2wiener2anglepsnr
π Expected Output & Metrics: Phase and magnitude reconstruction, relative residual error (<1e-4), SSIM (>0.95), and convergence within 40 iterations.
N = 128; x_true = imresize(im2double(imread('cameraman.tif')), [N N]);
F_true = fft2(x_true);
Y = abs(F_true) + 0.15*randn(N,N);
x = ifft2(Y);
v = x; u = zeros(N,N); max_iter = 40;
for k = 1:max_iter
F_x = fft2(v - u);
F_proj = Y .* exp(1i * angle(F_x));
x = real(ifft2(F_proj));
v = wiener2(real(x + u), [3 3]);
u = u + x - v;
end
fprintf('ADMM PnP Phase Retrieval Final PSNR: %.2f dB\n', psnr(v, x_true));
Est. Duration: 3β4 Weeks
Request Custom Project →
9. Characterization and Denoising of Auditory Evoked Potentials (AEP/ASSR) in EEG
Advanced
Toolbox: Signal Processing & Biomedical
Deliverables: Code .m, Research Report
π― Problem & Objective: Process multi-channel EEG/MEG data to extract microvolt-level Auditory Steady-State Responses (ASSR) and Brainstem Auditory Evoked Potentials (BAEP) buried under strong cortical background noise and ocular artifacts using ensemble averaging and narrow zero-phase IIR filters.
βοΈ Key MATLAB Functions:
designfiltfiltfiltpwelchmeanspectrogram
π Expected Output & Metrics: Extracted 40-Hz ASSR spectral power peak, SNR enhancement (>20 dB), phase coherence, and latency jitter suppression (<0.1 ms).
fs = 4000; t = 0:1/fs:0.5; num_trials = 250;
f_stim = 40;
clean_assr = 0.2 * sin(2*pi*f_stim*t);
eeg_trials = zeros(num_trials, length(t));
for i = 1:num_trials
noise = 1.5 * randn(size(t));
eeg_trials(i,:) = clean_assr + noise;
end
assr_avg = mean(eeg_trials, 1);
d = designfilt('bandpassiir', 'FilterOrder', 4, 'HalfPowerFrequency1', 38, ...
'HalfPowerFrequency2', 42, 'SampleRate', fs);
assr_filtered = filtfilt(d, assr_avg);
[pxx, f] = pwelch(assr_filtered, 512, 256, 1024, fs);
figure; plot(f, 10*log10(pxx)); xlim([0 100]);
xlabel('Frequency (Hz)'); ylabel('PSD (dB/Hz)'); title('Extracted 40-Hz ASSR Evoked Peak');
Est. Duration: 3β4 Weeks
Request Custom Project →
10. Swept-Tone Evoked Otoacoustic Emissions (OAE): Calibration and Deconvolution Artifact Reduction
Advanced
Toolbox: Audio & Signal Processing
Deliverables: Code .m, Research Report
π― Problem & Objective: Implement swept-tone acoustic stimulus calibration and regularized deconvolution-based acquisition to capture distortion product otoacoustic emissions (DPOAE) while suppressing probe acoustic ringing and transducer non-linear artifacts.
βοΈ Key MATLAB Functions:
chirpfftifftconvspectrogram
π Expected Output & Metrics: Stimulus artifact attenuation (>35 dB), separated cochlear emission latency profile, and noise floor reduction.
fs = 44100; dur = 0.5; t = 0:1/fs:dur;
stimulus = chirp(t, 1000, dur, 8000, 'logarithmic');
probe_ringing = 0.8 * exp(-t/0.005) .* sin(2*pi*3000*t);
cochlear_oae = [zeros(1, round(0.01*fs)), 0.05*exp(-t(1:end-round(0.01*fs))/0.02) .* sin(2*pi*4000*t(1:end-round(0.01*fs)))];
mic_recording = conv(stimulus, probe_ringing + cochlear_oae, 'same') + 0.01*randn(size(t));
inv_stim = conj(fft(stimulus)) ./ (abs(fft(stimulus)).^2 + 1e-4);
oae_impulse = real(ifft(fft(mic_recording) .* inv_stim));
oae_cleaned = oae_impulse; oae_cleaned(t < 0.006) = 0;
figure; plot(t*1000, oae_impulse, 'r', t*1000, oae_cleaned, 'b', 'LineWidth', 1.3);
xlabel('Time (ms)'); ylabel('Amplitude (Pa)'); legend('Raw Response', 'Separated OAE');
title('OAE Extraction Post Artifact Deconvolution');
Est. Duration: 3β4 Weeks
Request Custom Project →
11. Kalman Filter for Real-Time Dynamic Target Tracking and IMU Sensor Fusion
Intermediate
Toolbox: Control System & Sensor Fusion
Deliverables: Code .m, Simulink Model
π― Problem & Objective: Implement a discrete-time Linear Kalman Filter (KF) and Extended Kalman Filter (EKF) to fuse noisy accelerometer, gyroscope, and GPS positioning measurements, estimating true vehicle kinematic states and trajectory.
βοΈ Key MATLAB Functions:
kalmancovpredictcorrectextendedKalmanFilter
π Expected Output & Metrics: Position RMSE reduction (<0.35 m), covariance convergence plots, velocity estimation accuracy, and innovation sequence whiteness.
dt = 0.1; N = 200; t = (0:N-1)*dt;
A = [1 dt; 0 1]; H = [1 0];
Q = [0.01 0; 0 0.04];
R = 2.5;
true_pos = 0.5 * 1.5 * t.^2;
z = true_pos + sqrt(R)*randn(1, N);
x_est = [0; 0]; P = eye(2);
pos_estimates = zeros(1, N);
for k = 1:N
x_pred = A * x_est;
P_pred = A * P * A' + Q;
K = P_pred * H' / (H * P_pred * H' + R);
x_est = x_pred + K * (z(k) - H * x_pred);
P = (eye(2) - K * H) * P_pred;
pos_estimates(k) = x_est(1);
end
fprintf('Sensor RMSE: %.2f m | Kalman Filtered RMSE: %.2f m\n', ...
sqrt(mean((z - true_pos).^2)), sqrt(mean((pos_estimates - true_pos).^2)));
Est. Duration: 1β2 Weeks
Request Custom Project →
12. Powerline 50/60 Hz Notch and Comb Filter for Biomedical ECG/EMG Acquisition
Beginner
Toolbox: Signal Processing
Deliverables: Code .m, Report
π― Problem & Objective: Design high-Q zero-phase IIR Notch and Harmonic Comb filters to eradicate AC powerline hum (50 Hz / 60 Hz and their integer harmonics 100/120 Hz, 150/180 Hz) from sensitive ECG/EMG electrophysiological recordings.
βοΈ Key MATLAB Functions:
iirnotchiircombfiltfiltfreqzsnr
π Expected Output & Metrics: >55 dB attenuation notch depth at 50 Hz, zero phase distortion with `filtfilt`, and preservation of QRS cardiac complexes.
fs = 1000; t = 0:1/fs:2;
ecg_clean = sin(2*pi*5*t) + 0.5*sin(2*pi*15*t);
hum = 1.2*sin(2*pi*50*t) + 0.4*sin(2*pi*100*t);
ecg_noisy = ecg_clean + hum + 0.1*randn(size(t));
wo = 50/(fs/2); bw = wo/35;
[b_comb, a_comb] = iircomb(fs/50, bw, 'notch');
ecg_filtered = filtfilt(b_comb, a_comb, ecg_noisy);
figure; subplot(2,1,1); plot(t(1:400), ecg_noisy(1:400), 'r'); title('ECG with 50 Hz Hum');
subplot(2,1,2); plot(t(1:400), ecg_filtered(1:400), 'b'); title('Filtered ECG (Zero Powerline Interference)');
Est. Duration: 4β6 Hours
Request Custom Project →
13. Non-Local Means (NLM) and BM3D Denoising for Low-Light Microscopy Imagery
Advanced
Toolbox: Image Processing
Deliverables: Code .m, App
π― Problem & Objective: Implement patch-based Non-Local Means (NLM) and Block-Matching and 3D Filtering (BM3D) to exploit non-local spatial redundancy in low-photon fluorescence microscopy images, suppressing Poisson-Gaussian noise while preserving fine sub-cellular structures.
βοΈ Key MATLAB Functions:
im2doublepadarrayexppsnrssim
π Expected Output & Metrics: PSNR enhancement (>16 dB), SSIM improvement (>0.96), and superior texture retention compared to standard anisotropic diffusion.
img = im2double(imread('cameraman.tif'));
noisy = img + 0.08 * randn(size(img));
[M, N] = size(noisy);
h = 0.08; f = 2; r = 5;
pad_noisy = padarray(noisy, [r+f, r+f], 'symmetric');
denoised = zeros(M, N);
for i = 1:M
for j = 1:N
i1 = i + r + f; j1 = j + r + f;
W1 = pad_noisy(i1-f:i1+f, j1-f:j1+f);
w_total = 0; val_total = 0;
for r_i = -r:r
for r_j = -r:r
W2 = pad_noisy(i1+r_i-f:i1+r_i+f, j1+r_j-f:j1+r_j+f);
dist = sum(sum((W1 - W2).^2)) / ((2*f+1)^2);
weight = exp(-dist / (h^2));
w_total = w_total + weight;
val_total = val_total + weight * pad_noisy(i1+r_i, j1+r_j);
end
end
denoised(i,j) = val_total / w_total;
end
end
fprintf('Noisy PSNR: %.2f dB | NLM Denoised PSNR: %.2f dB\n', psnr(noisy, img), psnr(denoised, img));
Est. Duration: 2β3 Weeks
Request Custom Project →
14. Empirical Mode Decomposition (EMD) and Hilbert-Huang Transform (HHT) for Non-Stationary Signal Denoising
Advanced
Toolbox: Signal Processing & Wavelet
Deliverables: Code .m, Research Report
π― Problem & Objective: Decompose non-linear, non-stationary seismic and machinery vibration signals into Intrinsic Mode Functions (IMFs) using Empirical Mode Decomposition (EMD). Reconstruct denoised signals by discarding high-frequency noise-dominated IMFs.
βοΈ Key MATLAB Functions:
emdhhthilbertsplinesnr
π Expected Output & Metrics: IMF decomposition plots, Hilbert-Huang instantaneous frequency spectrum, and SNR enhancement (>15 dB).
fs = 1000; t = 0:1/fs:1;
clean = chirp(t, 10, 1, 80) + 0.8*exp(-((t-0.5)/0.08).^2);
noisy = clean + 0.4*randn(size(t));
[imf, residual, info] = emd(noisy, 'MaxNumIMF', 6);
reconstructed = sum(imf(:, 2:end), 2) + residual;
fprintf('Noisy SNR: %.2f dB | EMD Denoised SNR: %.2f dB\n', ...
snr(clean, noisy - clean), snr(clean, reconstructed' - clean));
figure; subplot(3,1,1); plot(t, noisy); title('Raw Noisy Non-Stationary Signal');
subplot(3,1,2); plot(t, imf(:,1)); title('Noise-Dominated IMF 1');
subplot(3,1,3); plot(t, reconstructed, 'b', t, clean, 'r--'); legend('EMD Denoised', 'Clean Signal');
Est. Duration: 2β3 Weeks
Request Custom Project →
15. Dual-Tree Complex Wavelet Transform (DT-CWT) for Seismic and Acoustic Echo Cancellation
Advanced
Toolbox: Wavelet & Audio Toolbox
Deliverables: Code .m, Research Report
π― Problem & Objective: Implement Dual-Tree Complex Wavelet Transform (DT-CWT) providing approximate shift-invariance and directional selectivity for multi-channel acoustic echo cancellation and geophysical seismic trace denoising.
βοΈ Key MATLAB Functions:
dualtreeidualtreecwtconvdsp.EchoCanceller
π Expected Output & Metrics: Echo Return Loss Enhancement (ERLE > 28 dB), shift-invariance validation, and low spectral distortion (<0.5 dB).
fs = 8000; t = 0:1/fs:0.5;
seismic_pulse = exp(-((t-0.2)/0.03).^2) .* sin(2*pi*45*t);
noisy_pulse = seismic_pulse + 0.35*randn(size(t));
[dt_real, dt_imag] = dualtree(noisy_pulse, 'Level', 4);
for lev = 1:4
complex_coeffs = dt_real{lev} + 1i * dt_imag{lev};
mag = abs(complex_coeffs);
thr = 0.25 * median(mag) / 0.6745;
shrink_factor = max(0, 1 - thr ./ (mag + eps));
dt_real{lev} = real(complex_coeffs .* shrink_factor);
dt_imag{lev} = imag(complex_coeffs .* shrink_factor);
end
denoised_pulse = idualtree(dt_real, dt_imag);
figure; plot(t, noisy_pulse, 'r', t, denoised_pulse, 'b', 'LineWidth', 1.4);
legend('Noisy Trace', 'DT-CWT Denoised'); title('Shift-Invariant DT-CWT Denoising');
Est. Duration: 3β4 Weeks
Request Custom Project →