how to calculate SNR?

6 Ansichten (letzte 30 Tage)
hafis radzi
hafis radzi am 14 Apr. 2019
Bearbeitet: Anudeep Kumar am 4 Jun. 2025
HELLO,i had some question.i have do some some filtering FFT using a matlab program.but,i need to compared the original signal,noise signal,and filtering signal based on SNR.but i dont understand how to calculate the snr ratio.pls help me or give a suggestion method how to compare and analysis the signal.tq

Antworten (1)

Anudeep Kumar
Anudeep Kumar am 4 Jun. 2025
Bearbeitet: Anudeep Kumar am 4 Jun. 2025
Hey hafis,
You can use MATLAB's inbuilt 'snr' function.
snr(x,y) returns the signal-to-noise ratio (SNR) in decibels of a signal x by computing the ratio of its summed squared magnitude to that of the noise y:
Assuming we have :
  • original_signal: the clean signal (without noise)
  • noisy_signal: the signal with added noise
  • filtered_signal: the result after applying your filter
snr_value = snr(original_signal, noisy_signal - original_signal);
In addition to this you can also manually calculate SNR using the formula
signal_power = mean(original_signal.^2);
noise_power = mean((noisy_signal - original_signal).^2);
snr_value = 10 * log10(signal_power / noise_power);
If we want to evaluate how well the filter worked:
noise_after_filter = filtered_signal - original_signal;
snr_filtered = 10 * log10(mean(original_signal.^2) / mean(noise_after_filter.^2));
I have attached the documentation of 'snr' for your reference.
Hope it helps!

Kategorien

Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by