Problems with snr function

조회 수: 5 (최근 30일)
Dick Rusell
Dick Rusell 2014년 9월 20일
댓글: Image Analyst 2014년 9월 20일
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'.

채택된 답변

Image Analyst
Image Analyst 2014년 9월 20일
How about:
theRatio = xn ./ ns;
theSNR = mean(theRatio);
  댓글 수: 2
Dick Rusell
Dick Rusell 2014년 9월 20일
편집: Dick Rusell 2014년 9월 20일
I'm not sure which formula you used to find snr in the first place.
Image Analyst
Image Analyst 2014년 9월 20일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Guillaume
Guillaume 2014년 9월 20일
Sounds like you don't have the signal processing toolbox.
ver
will tell you which toolboxes you have installed.
  댓글 수: 2
Image Analyst
Image Analyst 2014년 9월 20일
편집: Image Analyst 2014년 9월 20일
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.
Dick Rusell
Dick Rusell 2014년 9월 20일
편집: Dick Rusell 2014년 9월 20일
I'm using matlab 2011, how would I calculate it manually?

댓글을 달려면 로그인하십시오.


Youssef  Khmou
Youssef Khmou 2014년 9월 20일
편집: Youssef Khmou 2014년 9월 20일
Generally the formula is SNR=20log10(std(signal)/std(noise)) , in your case you have :
snr=20*log10(std(xn)/std(ns)) % 3.8dB

카테고리

Help CenterFile Exchange에서 Spectral Estimation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by