我想计算我的信号的 SQNR。
fs = 44100;
fs_orig=44100;
nbits = 16;
[x1,fs,nbits]=wavread('Mysong.wav');
y=x1(:,1);
y=y*32768;
y=round(y);
%filter your data
[B1,A1] = butter(4,[90 715]/(fs_orig/2),'bandpass');
dataOut1 = filter(B1, A1, dataIn); % // filter command filters your music
首先“删除”4 个最低有效位。所以我将样本除以 16,四舍五入,然后再乘以 16。
d1 = dataOut1*16;
d2 = round(d1);
a = int32(d1);
b = int32(16);
C = idivide(a, b);
r = snr(dataOut1,fs,fs)
d = snr(double(C),fs,fs)
error_signal = minus(d,r)
%express in db
error_db = 20*log10(error_signal)
我计算了误差信号(原始信号和重新量化信号之间的差异)。我得出 6.4180e-05 的结果。这可能吗?当我将其转换为 db 时,结果为 -83.8519 db。这个对吗?我做的对吗?价值看起来如此之大。