Problems with snr function
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dick Rusell
le 20 Sep 2014
Commenté : Image Analyst
le 20 Sep 2014
I want to find the snr for signal xn and noise ns but I keep getting an error.
clear;
n = [0:1023];
omega = 0.25*pi;
xn = sin(omega*n);
count = 1024;
ns = sqrt(0.2)*randn(1,count);
r = snr(xn,ns);
plot(r);
??? Undefined function or method 'snr' for input arguments of type 'double'.
0 commentaires
Réponse acceptée
Image Analyst
le 20 Sep 2014
How about:
theRatio = xn ./ ns;
theSNR = mean(theRatio);
2 commentaires
Image Analyst
le 20 Sep 2014
xn is your signal. ns is your noise. The SNR is theRatio xn/ns, but this gives the SNR element by element. So you have a bunch of SNR's - one for each element. So to get it down to just one SNR I took the mean of all the individual SNRs. If you want something different, then say what you want.
Plus de réponses (2)
Guillaume
le 20 Sep 2014
Sounds like you don't have the signal processing toolbox.
ver
will tell you which toolboxes you have installed.
2 commentaires
Image Analyst
le 20 Sep 2014
Modifié(e) : Image Analyst
le 20 Sep 2014
Or it's an antique version. I think snr() has not always been part of the Signal Processing Toolbox, but it's simple enough to calculate manually.
Youssef Khmou
le 20 Sep 2014
Modifié(e) : Youssef Khmou
le 20 Sep 2014
Generally the formula is SNR=20log10(std(signal)/std(noise)) , in your case you have :
snr=20*log10(std(xn)/std(ns)) % 3.8dB
0 commentaires
Voir également
Catégories
En savoir plus sur Spectral Estimation dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!