[Index for tmp_for_tar/misc] [Return to Master Index]

noislev

(tmp_for_tar/misc/noislev.m)


Function Synopsis

db = noislev(ref,signal)

Help text

       db = noislev(ref,signal) 

          = 10 * log10( mean((ref-signal).^2)/cov(ref(:)) )

 Noise level of signal-ref. NaN's are ignored. If signals are almost
 equal, db=200, rather than Inf. 

 See also : adnois

 Last modified: April 2001



Listing of function file tmp_for_tar/misc/noislev.m

##       db = noislev(ref,signal) 
##
##          = 10 * log10( mean((ref-signal).^2)/cov(ref(:)) )
##
## Noise level of signal-ref. NaN's are ignored. If signals are almost
## equal, db=200, rather than Inf. 
##
## See also : adnois

## Author:        Etienne Grossmann  <etienne@isr.ist.utl.pt>
## Last modified: April 2001

function db = noislev(ref,signal)

minl=10^(-200);
keep = find( !isnan(ref) & !isnan(signal)) ;
ref = ref(keep);
signal = signal(keep) ;
m1 = mean(mean((ref - mean(mean(ref))).^2));

if m1<minl, 
  sprintf("Small ref signal in noislev")
  lm1 = -99; 
else lm1 = log10(m1); end;

m2 = mean(mean((ref-signal).^2));

if m2<minl, 
  ## sprintf("Almost equal signals in noislev")
  ## db = 200; ## 10*(lm1-log10(m2)); ## lm1+99; 
  db = inf;
else 
  db = 10*(lm1-log10(m2)); 
end;

## log10(mean(mean((ref - mean(mean(ref))).^2)))
## log10(mean(mean((ref-signal).^2)))

Produced by oct2html on Sat Apr 28 21:14:54 2001
Cross-Directory links are: ON