⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snr2.m

📁 自己写的信噪比计算工具snr2.m snr2(s2ana,fs,f0,fl,fh,bl,bh) s2ana: 待分析信号 fs:采样频率 f0:信号频率 [fl,fh]:信号能量分散带
💻 M
字号:
%自己写的信噪比计算工具snr2.m 
%snr2(s2ana,fs,f0,fl,fh,bl,bh)
%s2ana: 待分析信号
%fs:采样频率
%f0:信号频率
%[fl,fh]:信号能量分散带


function snr = snr2(s2ana,fs,f0,fl,fh,bl,bh);
[sizea,sizeb] = size(s2ana);
if (sizea==1)
    s = s2ana';
else
    s = s2ana;
end
len = length(s);

s_window = s.*hann(len)/max(s2ana);
fft_s = fft(s_window,len)/len;
psd_s = fft_s .*conj(fft_s);
len1 = fix(len/2);
psd1_s = psd_s(1:len1)*65/2;
figure;
plot((0:len1-1)/len*fs,10*log10(psd1_s));grid;

%compute the fft line corresponding to fl,fh,bl,bh;
fp_fl = fix(fl*len/fs)+1;
if (fp_fl==0)
    fp_fl = 1;
end

fp_fh = fix(fh*len/fs)+1;
if (fp_fh>len1)
    fp_fh = len1;
end

fp_bl = fix(bl*len/fs)+1;
if (fp_bl==0),
    fp_bl = 1;
end

fp_bh = fix(bh*len/fs)+1;
if (fp_bh>len1),
    fp_bh=len1;
end

energy_sig = 0;
energy_noise = 0;
energy_sig = sum(psd1_s(fp_fl:fp_fh));
energy_noise = sum(psd1_s(fp_bl:fp_bh)) - energy_sig ...
    + (fp_fh-fp_fl+1)*(psd1_s(fp_fl)+psd1_s(fp_fh))/2;

snr = 10*log10(energy_sig /  energy_noise);






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -