Problems with snr function
7 views (last 30 days)
Show older comments
Dick Rusell
on 20 Sep 2014
Commented: Image Analyst
on 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 Comments
Accepted Answer
Image Analyst
on 20 Sep 2014
How about:
theRatio = xn ./ ns;
theSNR = mean(theRatio);
2 Comments
Image Analyst
on 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.
More Answers (2)
Guillaume
on 20 Sep 2014
Sounds like you don't have the signal processing toolbox.
ver
will tell you which toolboxes you have installed.
2 Comments
Image Analyst
on 20 Sep 2014
Edited: Image Analyst
on 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
on 20 Sep 2014
Edited: Youssef Khmou
on 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 Comments
See Also
Categories
Find more on Spectral Estimation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!