Problems with snr function
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dick Rusell
el 20 de Sept. de 2014
Comentada: Image Analyst
el 20 de Sept. de 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 comentarios
Respuesta aceptada
Image Analyst
el 20 de Sept. de 2014
How about:
theRatio = xn ./ ns;
theSNR = mean(theRatio);
2 comentarios
Image Analyst
el 20 de Sept. de 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.
Más respuestas (2)
Guillaume
el 20 de Sept. de 2014
Sounds like you don't have the signal processing toolbox.
ver
will tell you which toolboxes you have installed.
2 comentarios
Image Analyst
el 20 de Sept. de 2014
Editada: Image Analyst
el 20 de Sept. de 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
el 20 de Sept. de 2014
Editada: Youssef Khmou
el 20 de Sept. de 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 comentarios
Ver también
Categorías
Más información sobre Spectral Estimation en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!