基于matlab信噪比程序
% 计算信噪比函数
% I :original signal
% In:noisy signal(ie. original signal + noise signal)
% 信噪比的定义为 :
% SNR=信号能量/噪声能量=(纯信号)^2/(带噪信号-纯信号)^2
snr=0;
Ps=sum((I-(mean(I))).^2);%signal power
Pn=sum((I-In).^2); %noise power
snr=10*log10(Ps/Pn); % 其中I是纯信号,In是带噪信号,snr是信噪比
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
基于matlab信噪比函数
% This function calculates the snr of a signal with reference to original signal. SNR can be calculated for 1-D/2-D/3-D signals.
% output: snr-> snr in dB
% input:
% orgSig-> original 1-D/2-D/3-D signal (or reference signal)
% recSig-> reconstructed (1-D/2-D/3-D) signal/ signal obtained from the experiment/ signal, of which snr is to be calculated with reference to original signal.
% boun-> boun is the boundary left at the corners for the snr calculation. default value = 0
function snr = calSNR(orgSig,recSig,varargin)
if isempty(varargin)
boun = 0;
else boun = varargin{1};
end
if size(orgSig,2)==1 % if signal is 1-D
orgSig = orgSig(boun+1:end-boun,:);
recSig = recSig(boun+1:end-boun,:);
else % if signal is 2-D or 3-D
orgSig = orgSig(boun+1:end-boun,boun+1:end-boun,:);
recSig = recSig(boun+1:end-boun,boun+1:end-boun,:);
end
sigEner = norm(orgSig(:))^2;
errEner = norm(orgSig(:)-recSig(:))^2;
snr = 10*log10(sigEner/errEner);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
基于python的信噪比计算函数
def snr_out(signal_source,signal_source_noise):
signal_noise = signal_source - signal_source_noise
mean_signal_source = np.mean(signal_source)
signal_source = signal_source - mean_signal_source
snr = 10 * math.log(np.sum(signal_source**2) / np.sum(signal_noise**2),10)
return snr
- 1
- 2
- 3
- 4
- 5
- 6
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览416632 人正在系统学习中
评论记录:
回复评论: