how to calculate SNR?

5 次查看(过去 30 天)
hafis radzi
hafis radzi 2019-4-14
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

回答(1 个)

Anudeep Kumar
Anudeep Kumar 2025-6-4
编辑:Anudeep Kumar 2025-6-4
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!

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by